5

可能重复:
“作为属性参数的数组不符合 CLS”警告,但未给出类型信息

我有一些代码,它会在几个地方生成这个警告。我想修复它们,但我不知道它们在哪里,因为 C# 编译器没有报告错误行(有一个开放的 MS Connect 问题)。

有没有工具可以告诉我有问题的代码在哪里?IL 级工具很好,知道方法名称和声明类型就足够了。

4

2 回答 2

3

您已经声明了一个类,如:

[SomeAttribute(new string[] { "foo", "bar" })
class SomeClass { }

或已声明如下属性:

class SomeAttribute : Attribute
{
    public SomeAttribute(string[] arr) { } // or another array
}

而这一切正在发生,因为您的程序集被标记为 CLSCompliant:

[assembly:CLSCompliant(true)]

于 2010-05-26T12:35:34.520 回答
1

我会采用以下流程:

  • 识别在其构造函数中具有数组的属性(执行此操作所需的复杂程度显然取决于您拥有多少从 Attribute 派生的类)
  • 使用属性类构造函数上的 Visual Studio“查找所有引用”选项来查找使用数组使用属性修饰的事物。

如果在您的解决方案中定义了相关属性,那么第一部分应该相当容易。

如果属性来自依赖项,那么您可能必须使用正则表达式搜索来查找使用此类属性的位置。

于 2010-05-26T12:54:55.413 回答