20

コード分​​析を使用しようとしていますMicrosoft.Bcl.Asyncが、コード分析を実行すると 1 つ以上のエラーが発生します。

Update 2 を適用した Visual Studio 2012 を使用しています。

これは私が再現するのは簡単です:

  1. を対象とする新しい既定のコンソール アプリを作成します.Net 4
  2. 右クリックReferencesして選択Manage NuGet Packages...
  3. クリックしてボックスOnlineに入力asyncSearch Onlineます。
  4. が表示されますAsync for .Net Framework 4 ...。クリックしInstallて、すべての質問に同意します。
  5. Main()次の行に追加しTaskEx.Delay(1000);ます。using System.Threading.Tasks;
  6. プロジェクトのプロパティ、コード分析セクションに移動し、チェックマークを付けEnable Code Analysis on Buildます。
  7. プログラムをコンパイルします。

次の 2 つのコード分析エラーが発生します。

CA0052 コード分析の実行エラー CA0052 : ターゲットが選択されていません。[エラーと警告] (グローバル)

CA0055 コード分析の実行エラー CA0055: ConsoleApplication2.exe を読み込めませんでした。モジュール 'ConsoleApplication2' の読み取り中に次のエラーが発生しました: メンバー参照を解決できませんでした: [Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]System.Threading.Tasks.TaskEx::Delay. [エラーと警告] (グローバル)

他のテスト プログラムとは異なるコード分析エラーが発生します。私が試した基本的な Windows フォーム アプリでは、次のような結果が得られました。

CA0001 コード分析の実行エラー CA0001 : モジュール 'AsyncForNet4' の読み取り中に次のエラーが発生しました: メンバー参照を解決できませんでした: [Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]System.Threading. Tasks.TaskEx::遅延。[エラーと警告] (グローバル)

2 つの質問:

  1. 他の誰かがこの問題を再現できますか?
  2. 誰にも解決策がありますか?
4

3 に答える 3

3

これは、Bcl.Async アセンブリで宣言されている依存関係のバージョンが、分析時に使用できるものと一致しないために発生します。最も簡単な回避策は、 http:AssemblyReferenceResolveMode //davesbox.com/archive/2008/06/14/reference-resolutions-changes-in-code-analysis-and-fxcop-part-2.aspxで説明されているようにFxCop を調整することです。

于 2013-06-25T14:53:55.903 に答える