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