有什么理由不将DLL标记为CLSCompliant?

时间:2011-08-08 12:56:54

标签: c# cls-compliant

我目前正在测试Ndepend,它给了我一个警告,即程序集应该被标记为CLSCompliant。

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

我想知道的是:将dll标记为clscompliant有什么负面影响,还是应该禁用警告?

注意我不是在问这里有什么CLSCompliant意味着:What is the 'CLSCompliant' attribute in .NET?

3 个答案:

答案 0 :(得分:7)

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

所以:如果它没有给你增加任何价值 无论 ,那么坦率地说:关掉那条规则。如果你可以免费添加它(除了属性没有代码更改),那么也许没问题 - 但一切都是平衡 - 努力与结果。如果这里没有收益,不要投入时间。

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

答案 1 :(得分:2)

有几个C#功能不符合CLS,例如无符号类型。由于几种语言不区分大小写,因此必须没有类型和成员仅根据具体情况而不同,例如MyObjectmyObject以及其他一些功能。因此,如果您不打算使用其他.NET语言,则没有理由将您的代码标记为CLSCompliant

答案 2 :(得分:1)

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