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