9

我目前正在测试 Ndepend,它警告我程序集应标记为 CLSCompliant。

我们的项目都是 C#,所以它不是真的需要。

我想知道的是:将 dll 标记为 clscompliant 是否有任何负面影响,或者我应该禁用警告吗?

注意我不是在问这里介绍的 CLSCompliant 是什么意思:What is the 'CLSCompliant' attribute in .NET?

4

3 回答 3

8

这是那些微妙的案例之一...... CLS 合规性对于图书馆作者来说可能是重要的,他们无法控制调用者是谁。在您的情况下,您声明“我们的项目都是 C#”,在这种情况下您是对的:不需要它。它添加了限制(例如,对无符号类型),这些限制可能(或可能不会)影响以最明显的方式表示您的数据。

所以:如果它对您没有任何价值那么坦率地说:关闭该规则。如果您可以免费添加它(除了属性没有代码更改),那么也许可以 - 但一切都是平衡的 - 努力与结果。如果这里没有收获,就不要投入时间。

如果您是图书馆作者(商家或 OSS),那么您应该关注它。

于 2011-08-08T13:11:20.820 回答
2

有几个 C# 功能不符合 CLS,例如无符号类型。由于几种语言不区分大小写,因此必须没有仅区分大小写的类型和成员,例如MyObjectandmyObject和其他几个特征。因此,如果您不打算使用其他 .NET 语言,则没有理由将您的代码标记为CLSCompliant.

于 2011-08-08T13:12:03.277 回答
1

当您的代码标记为 时,唯一的负面影响是编译器错误CLSCompliant,但事实并非如此。

于 2011-08-08T13:00:52.680 回答