web-dev-qa-db-ja.com

アセンブリバインディングリダイレクトとコード分析

Visual Studio2010のMvc3.0.0.0プロジェクトでDotNetOpenAuth(System.Web.Mvcバージョン1.0.0.0を参照)を使用しています。

私は次のようにアセンブリバインディングリダイレクトを使用しています:-

<runtime>
  <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

次のエラーが発生するコード分析を除いて、すべて正常に動作します。-

CA0001:モジュールXの読み取り中に次のエラーが発生しました:アセンブリ参照を解決できません:System.Web.Mvc、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35。

そして

CA0058:参照されているアセンブリ 'System.Web.Mvc、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'が見つかりませんでした。このアセンブリは分析に必要であり、参照元はXです。

アセンブリバインディングリダイレクトを尊重するようにコード分析ツールを取得する方法はありますか?

44
Iain Galloway

もう少し正確な答えを補足するだけです:

次のコマンドでFxCopCmd.exeを実行する必要があります。

fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion

または、次のように、ビルド構成ごとにVisualStudioプロジェクトファイルを変更します。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  ...
  <CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
</PropertyGroup>
64
peter_raven

http://davesbox.com/archive/2008/06/10/reference-resolution-changes-in-code-analysis-and-fxcop-part-1.aspx および ( http://davesbox.com/archive/2008/06/14/reference-resolutions-changes-in-code-analysis-and-fxcop-part-2.aspx 背景情報については、こちらをご覧ください。

VS2010/FxCop 10.0には、fxcopcmd.exe用の新しい/ assemblyCompareModeコマンドラインスイッチがあり、.configファイルをいじることなく比較モードを指定できます。これは、CodeAnalysisAdditionalOptions MSBuildプロパティを使用して、VSプロジェクトで指定できます。

6
Nicole Calinoiu

Peter_ravenソリューションに加えて、コード分析をTFSビルドで機能させるオプションを指定できます。これをビルドオプション、プロセスタブ、「MSBuild引数」の詳細カテゴリに追加します。

/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion
4
Michael Logutov

コード分​​析をオフにする必要がある場合は、これを使用します。

Visual Studio 2012では、

  1. プロジェクトを右クリックし、ポップアップメニューから[プロパティ]を選択します。
  2. 「コード分析」タブをクリックし、「ビルド時にコード分析を有効にする」のチェックを外します

クリーンアンドビルド。コード分​​析エラーはなくなるはずです。

1
ShaTin