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

次のプロセスを採用します。

  • コンストラクターに配列を持つ属性を特定します (これを行うために必要な洗練度は、属性から派生するクラスの数によって明らかに異なります)。
  • 属性クラス コンストラクターで Visual Studio の [すべての参照を検索] オプションを使用して、配列を使用して属性で修飾されているものを検索します。

問題の属性がソリューションで定義されている場合、最初の部分はかなり簡単です。

属性が依存関係からのものである場合、正規表現検索を使用して、そのような属性が使用されている場所を見つける必要がある場合があります。

于 2010-05-26T12:54:55.413 に答える