我正在开发一个UWP库,它具有StreamSocket类的公共属性和方法参数。但是,我得到的" StreamSocket不符合CLS"警告。微软决定让各个程序集符合非CLS标准并且在使用/分发这个库时我应该知道任何潜在的问题吗?也许CLS不合规会以某种方式限制其他开发人员使用我的库的方式吗?
答案 0 :(得分:2)
嗯,从文档:
如果您设计符合CLS的类库,那么您的库将保证与各种编程语言的互操作性;因此,您的图书馆可能拥有比不符合CLS的版本更广泛的客户群。
所以[明显]的答案是,当他们编写那个东西时,他们没有考虑“编程语言的互操作性”。
说实话,我并不感到惊讶,MS并不完全以严格而闻名(IE是谁?)
在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx
<强>更新强>
我会根据评论尝试揭开这一点。
CLS(公共语言规范)定义了任何针对.NET Framework 必须支持的语言的功能。因此,如果您的库将被.NET语言使用,您应该只关心它。
例如,CLS中存在一个限制,即类和成员名称只能按大小写不同。您不能拥有一个名为MySocket的属性和另一个名为mySocket的属性。这对于像VB .NET这样不区分大小写的语言非常重要。
在目前的情况下,您的库正在暴露StreamSocket,它未标记为CLS Compliant。如果这个类有类似上面的示例的方法并且您尝试在某些VB.NET项目中使用您的库,该怎么办?这就是编译器警告你的内容。