다음을 통해 공유


CA1420: 속성, 유형 또는 특성에는 런타임 마샬링이 필요합니다.

속성
규칙 ID 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를 제거합니다.