我目前正在测试 Ndepend,它警告我程序集应标记为 CLSCompliant。
我们的项目都是 C#,所以它不是真的需要。
我想知道的是:将 dll 标记为 clscompliant 是否有任何负面影响,或者我应该禁用警告吗?
注意我不是在问这里介绍的 CLSCompliant 是什么意思:What is the 'CLSCompliant' attribute in .NET?
我目前正在测试 Ndepend,它警告我程序集应标记为 CLSCompliant。
我们的项目都是 C#,所以它不是真的需要。
我想知道的是:将 dll 标记为 clscompliant 是否有任何负面影响,或者我应该禁用警告吗?
注意我不是在问这里介绍的 CLSCompliant 是什么意思:What is the 'CLSCompliant' attribute in .NET?
这是那些微妙的案例之一...... CLS 合规性对于图书馆作者来说可能是最重要的,他们无法控制调用者是谁。在您的情况下,您声明“我们的项目都是 C#”,在这种情况下您是对的:不需要它。它添加了限制(例如,对无符号类型),这些限制可能(或可能不会)影响以最明显的方式表示您的数据。
所以:如果它对您没有任何价值,那么坦率地说:关闭该规则。如果您可以免费添加它(除了属性没有代码更改),那么也许可以 - 但一切都是平衡的 - 努力与结果。如果这里没有收获,就不要投入时间。
如果您是图书馆作者(商家或 OSS),那么您应该关注它。
有几个 C# 功能不符合 CLS,例如无符号类型。由于几种语言不区分大小写,因此必须没有仅区分大小写的类型和成员,例如MyObject
andmyObject
和其他几个特征。因此,如果您不打算使用其他 .NET 语言,则没有理由将您的代码标记为CLSCompliant
.
当您的代码标记为 时,唯一的负面影响是编译器错误CLSCompliant
,但事实并非如此。