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;

0 ответов

Другие вопросы по тегам