【发布时间】:2018-02-28 09:53:28
【问题描述】:
标题说明了一切 - 如何将 .NET 标准库标记为符合 CLS?
我用 C# 编写了一个针对 .NET Standard 1.0 框架的简单库。它包括两个枚举:
public enum Alignments { Left, Center, Right }
public enum Actions { None, Total, Average, Count }
当我尝试在 .NET 4.6 项目中使用该库时,它会将枚举标记为不符合 CLS:
警告 CS3001 参数类型“操作”不符合 CLS
我无法向 AssemblyInfo.cs 添加任何内容,因为 .NET 标准不使用它。它似乎也不支持作为 .csproj 文件中的属性。
【问题讨论】:
-
你不能把属性放在你项目的任何类中吗?
-
将属性添加到枚举会导致新警告:
Warning CS3014 'Alignments' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute- 看图。于是我翻遍了文档,找到了答案:你把[assembly: CLSCompliant(true)]语句放在了常规代码中。感谢您的帮助! -
[CLSCompliant] 十年前就不再有用了,JScript 的停产给它的棺材钉上了最后一颗钉子。为什么将它添加到使用该库的程序集中?永远不要写你不懂的代码,把它删掉。
-
@HansPassant - 您能否详细说明
CLSCompliant不再有用(可能是链接)?例如,将其用于与 VB.NET 的兼容性是否仍然有意义? -
在早年仍然可能遇到对某些类型有问题的语言时,这很重要。是的,就像 vb.net,直到 2005 年。 jscript 直到 2008 年。仅此而已。泛型将是一种不稳定的语言,但 [CLSCompliant] 不会检查这一点。
标签: .net-standard cls-compliant