CA1420: propriedade, tipo ou atributo requer marshaling de runtime

Property Valor
ID da regra CA1420
Título A propriedade, o tipo ou o atributo requerem marshaling de runtime
Categoria Interoperabilidade
Correção interruptiva ou sem interrupção Quebra
Habilitado por padrão no .NET 8 Como aviso

Causa

Um recurso de código é usado que requer marshaling de runtime e o marshaling de runtime está explicitamente desabilitado.

Descrição da regra

O uso de recursos que exigem marshaling em runtime quando o marshaling de runtime está desabilitado resulta em exceções de runtime.

Como corrigir violações

Habilite o marshaling de runtime ou remova o código que requer marshaling de runtime.

Quando suprimir avisos

Não suprima um aviso nessa regra.

Exemplo

O seguinte snippet de código mostra uma violação de 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

Para corrigir a violação, remova o DisableRuntimeMarshallingAttribute no assembly.