在编译我的解决方案时,我收到以下几条警告:
warning CS3016: Arrays as attribute arguments is not CLS-compliant
没有给出关于哪种类型不合规的其他信息。在我的项目中,我有一些属性在其构造函数中使用params数组参数,但它们都是内部的,并且不应该影响CLS兼容性。为什么要给出这个警告,它的类型是什么?
答案 0 :(得分:6)
如果您有一个以数组作为参数且项目标记为CLSCompliant的属性,您将收到此警告。
答案 1 :(得分:3)
我今天遇到了这个。我出现了4个警告实例。然后我发现我在该程序集中具有装饰4个公共方法的属性。当我一个接一个地删除它们时,错误就一个接一个地消失了。
另外,如果你没有符合CLS,你可以将[CLSCompliant(false)]放在用属性(或定义方法的类)修饰的方法上。将它放在有问题的属性构造函数/类上并不起作用。我想这是有道理的,因为最终属性可能作为公共方法元数据的一部分暴露在程序集之外。
答案 2 :(得分:0)
我遇到了同样的问题,而我要做的就是使用"在文件中查找" VS2010中的对话框选择使用:通配符,然后在查找内容:文本框中输入
\[*\(*\)\]
生成所有属性实例的列表。我一个接一个地找到并纠正警告。