我有一个.NET 3.5 C#项目,其名称空间为SampleNamespace.Tools.Sample
。
如果我将一个名为“Samplenamespace.Utils.Example”的程序集添加到我的项目中,我会收到以下警告:
标识符'Samplenamespace'的区别仅在于不符合CLS的情况
请注意Samplenamespace
中的小写字母“n”。
我目前甚至没有在我的项目中使用参考组件。只需将其添加为参考就会发出警告。
为什么编译器会抱怨这一点,因为我甚至没有在公共类中公开对程序集的任何引用?
任何解决方法?
答案 0 :(得分:7)
当你有这样的混合命名空间时,并不是所有的.NET语言都区分大小写(例如VB),只有在大小写的情况下才能区分(使用警告的措辞)你的代码可能无法访问其他开发人员。
这可能不是你的情况,这就是为什么它是一个警告(在我的商店我们视为错误)
答案 1 :(得分:3)
它只是警告您,因为并非所有能够使用解决方案中的类型的语言都会意识到差异(并且可能无法使用这些类型)。
我认为您可以通过将程序集标记为非CLS兼容(在AssemblyInfo.cs文件中)(read more here)来避免此警告:
[assembly:CLSCompliant(false)]
不确定我认为这是一个好主意...
更新:我认为发布警告但没有公开的原因是命名空间没有访问修饰符。您可能会说命名空间始终是公共的,因此它们 会向潜在客户公开,即使它们可能不包含任何公共类型。