CA1014:用 CLSCompliantAttribute 标记程序集

属性
规则 ID CA1014
标题 用 CLSCompliantAttribute 标记程序集
类别 设计
修复是中断修复还是非中断修复 非中断
在 .NET 8 中默认启用

原因

程序集没有已应用的 System.CLSCompliantAttribute 属性。

规则说明

公共语言规范 (CLS) 定义了程序集在跨编程语言使用时必须符合的命名限制、数据类型和规则。 好的设计要求所有程序集用 CLSCompliantAttribute 显式指示 CLS 合规性。 如果程序集没有此属性,则该程序集即不合规。

符合 CLS 的程序集可能包含不合规的类型或类型成员。

如何解决冲突

若要解决此规则的冲突,请将属性添加到程序集。 应确定不合规的类型或类型成员,并将这些元素标记为不合规,而不是将整个程序集标记为不相容。 如果可能,应为不合规的成员提供符合 CLS 的替代方法,让尽可能多的用户能够访问程序集的所有功能。

何时禁止显示警告

不禁止显示此规则发出的警告。 如果不希望程序集符合 CLS,请应用属性并将其值设置为 false

抑制警告

如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。

#pragma warning disable CA1014
// The code that's violating the rule is on this line.
#pragma warning restore CA1014

若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none

[*.{cs,vb}]
dotnet_diagnostic.CA1014.severity = none

有关详细信息,请参阅如何禁止显示代码分析警告

示例

下面的示例演示应用了 System.CLSCompliantAttribute 属性的程序集,该属性声明此程序集符合 CLS。

[assembly:CLSCompliant(true)]
namespace DesignLibrary {}
<assembly:CLSCompliant(true)>
Namespace DesignLibrary
End Namespace

另请参阅