LibraryImportAttribute неправильно указывает использование метода расширения и предотвращает компиляцию.
Я использую .NET 8 Preview 6 и Visual Studio 2022, обновленные сегодня.
Сегодня я обновил библиотеку, изменив сDllImport
до, но это указываетCS0755
.
Вот мое объявление импортированного метода:
public unsafe static partial class CppCoreFuncs
{
#region private
[LibraryImport(DLL, EntryPoint = "Poly2Cofs_multi_buf"), SuppressUnmanagedCodeSecurity]
private static partial FuncResult Poly2CofsMultiBuf(void* buffer, InputMode mode);
#endrgion
...
}
Это генерирует следующий код:
public unsafe static partial class CppCoreFuncs
{
[System.Runtime.InteropServices.DllImportAttribute("CPP Core.dll", EntryPoint = "Poly2Cofs_multi_buf", ExactSpelling = true)]
private static extern partial global::RWT.ROCT.Core.Public.FuncResult Poly2CofsMultiBuf(void* buffer, global::RWT.ROCT.Core.Public.InputMode mode);
}
Когда я компилирую, я получаю это:
Ошибка CS0755 Оба объявления частичного метода должны быть методами расширения, иначе ни одно из них не может быть методом расширения... Core\Microsoft.Interop.LibraryImportGenerator\Microsoft.Interop.LibraryImportGenerator\LibraryImports.g.cs
Документация: Генерация исходного кода для вызовов платформы .
Не существует метода расширения. Если я перейду обратно наDLLImport
затем следующее объявление импорта метода сLibraryImport
получает эту ошибку. Оно появляется только один раз.
РЕДАКТИРОВАТЬ
Для справки, вот заглушка, созданная генератором рабочего кода дляGeneratedRegexAttribute
:
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Text.RegularExpressions.Generator", "8.0.8.32907")]
internal static partial global::System.Text.RegularExpressions.Regex QuotedOrUnquotedNewLineRx() => global::System.Text.RegularExpressions.Generated.QuotedOrUnquotedNewLineRx_7.Instance;