CA1420: для свойств, типов или атрибутов требуется маршаллирование среды выполнения

Свойство Значение
Идентификатор правила CA1420
Заголовок Для свойства, типа или атрибута требуется маршаллирование среды выполнения
Категория Совместимость
Исправление является критическим или не критическим Критическое
Включен по умолчанию в .NET 8 Как предупреждение

Причина

Используется функция кода, требующая маршаллинга среды выполнения, а маршаллирование среды выполнения явно отключено.

Описание правила

Использование функций, требующих маршаллинга среды выполнения при отключении маршалинга среды выполнения, приведет к исключениям во время выполнения.

Устранение нарушений

Включите маршаллирование среды выполнения или удалите код, требующий маршалинг среды выполнения.

Когда лучше отключить предупреждения

Не подавляйте предупреждение из этого правила.

Пример

В следующем фрагменте кода показано нарушение CA1420:

using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

[assembly: DisableRuntimeMarshalling]

class C
{
    // Violates rule CA1420.
    [DllImport("NativeLibrary", SetLastError = true)]
    public static extern void MyMethod ();
}
Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices

<Assembly: DisableRuntimeMarshalling>

Class C
    ' Violates rule CA1420.
    <DllImport("NativeLibrary", SetLastError:=True)>
    Public Shared Sub MyMethod()
        '...
    End Sub
End Class

Чтобы устранить нарушение, удалите DisableRuntimeMarshallingAttribute сборку.