Partilhar via


CA1420: Propriedade, tipo ou atributo requer empacotamento de tempo de execução

Propriedade valor
ID da regra CA1420
Título Propriedade, tipo ou atributo requer empacotamento de tempo de execução
Categoria Interoperabilidade
A correção causa interrupção ou não Interrupção
Habilitado por padrão no .NET 10 Como aviso
Línguas aplicáveis C# e Visual Basic

Motivo

É utilizado um recurso de código que requer marshalling em tempo de execução, mas o marshalling em tempo de execução é explicitamente desativado.

Descrição da regra

Usar funcionalidades que exijam marshalling em tempo de execução quando este está desativado resultará em exceções em tempo de execução.

Como corrigir violações

Ative a intermediação em tempo de execução ou remova o código que requer intermediação em tempo de execução.

Quando suprimir avisos

Não ignore ou suprima um aviso desta regra.

Exemplo

O trecho de código a seguir mostra uma violação de CA1420:

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

[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 na montagem.