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。