我正在开发一个 UWP 库,它具有 StreamSocket 类的公共属性和方法参数。但是,我收到“StreamSocket 不符合 CLS”警告。有什么特别之处,以至于微软决定让相应的程序集不符合 CLS,在使用/分发这个库时我应该知道什么潜在的问题吗?也许 CLS 不合规会以某种方式限制其他开发人员使用我的库的方式?
问问题
284 次
1 回答
2
好吧,从文档中:
如果您设计一个符合 CLS 的类库,您的库将保证与各种编程语言的互操作性;因此,与不符合 CLS 的版本相比,您的库可能拥有更广泛的客户群。
所以[明显的] 答案是他们在编写那个东西时并没有考虑到“编程语言互操作性”。
老实说,我并不感到惊讶,MS 并不以严格着称(IE 有人吗?)
在此处阅读更多信息:https ://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx
更新:
我将根据评论尝试对此进行一些揭秘。
CLS(通用语言规范)定义了任何面向 .NET Framework 的语言必须支持的功能。因此,只有当您的库将被 .NET 语言使用时,您才应该关心它。
例如,CLS 中有一个限制,即类名和成员名不能仅区分大小写。您不能拥有一个名为 MySocket 的属性和另一个名为 mySocket 的属性。这对于不区分大小写的 VB .NET 等语言很重要。
在目前的情况下,您的库正在公开未标记为符合 CLS 的 StreamSocket。如果这个类有类似上面示例的方法并且你尝试在一些 VB.NET 项目中使用你的库怎么办?这就是编译器警告您的内容。
于 2016-12-20T16:53:33.600 回答