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です。
アセンブリバインディングリダイレクトを尊重するようにコード分析ツールを取得する方法はありますか?
もう少し正確な答えを補足するだけです:
次のコマンドでFxCopCmd.exeを実行する必要があります。
fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion
または、次のように、ビルド構成ごとにVisualStudioプロジェクトファイルを変更します。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
...
<CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions>
</PropertyGroup>
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プロジェクトで指定できます。
Peter_ravenソリューションに加えて、コード分析をTFSビルドで機能させるオプションを指定できます。これをビルドオプション、プロセスタブ、「MSBuild引数」の詳細カテゴリに追加します。
/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion
コード分析をオフにする必要がある場合は、これを使用します。
Visual Studio 2012では、
クリーンアンドビルド。コード分析エラーはなくなるはずです。