Update 3 FinalBuilder が MSBUILD を呼び出しているときに、古いバージョンの FxCop が呼び出されているように見えることを発見しました。コマンド ラインを使用して、FxCop の VS2010 バージョンで実行するとすべて正常に動作しますが、VS2008 で同じコマンドを使用すると、エラー メッセージが表示されますSwitch /reference is an unknown switch
。
FinalBuilder 6を使用して構築されたVisual Studio 2008ソリューションがありました。
ソリューションを Visual Studio 2010 に変換し、FinalBuilder 7 にアップグレードしました。このソリューションは、Visual Studio 内からの静的コード分析を使用して正常にビルドされますが、FinalBuilder 7 で実行するとビルドが失敗し、次のエラーが発生します。
コード分析を実行中...
スイッチ '/reference' は不明なスイッチです。
MSBUILD: エラー: CA0059: CodeAnalysis タスクに無効な設定が渡されました。詳細については、出力ウィンドウを参照してください。
何が原因で、どうすればこの問題を解決できますか? /reference スイッチの意味や設定場所がどこにも見つかりません。Visual Studio で動作するので、FinalBuilder が MSBUILD を呼び出す方法に関係があるのではないかと考えていますが、ここでは推測しています。
どんなアイデアでも大歓迎です。
更新:コード分析設定は、ソリューション項目の一部である .ruleset ファイルにあり、次のように .csproj で参照されます。
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRules>
</CodeAnalysisRules>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>..\myproduct.ruleset</CodeAnalysisRuleSet>
更新 2: FinalBuilder が使用しているビルド コマンドをコマンド ラインから実行すると、すべてが機能します。コマンド ラインから呼び出すと、FxCop が次のパラメーターで呼び出されることに気付きました。
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Rebuild /nr:false /p:Configuration="Release";Platform="Any CPU";TargetFramework="v2.0" /v:normal /m "C:\makempm\5.0.0.0\myproductTool.sln"
次に、次のように FxCopCmd.exe を呼び出します。
C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\FxCopCmd.exe
/outputCulture:1033
/out:"bin\Release\myproduct.exe.CodeAnalysisLog.xml"
file:"bin\Release\myproduct.exe" /reference:"C:\makempm\5.0.0.0\mpCommon\bin\Release\mpCommon.dll"
/reference:"C:\makempm\5.0.0.0\mpConfiguration\bin\Release\mpConfiguration.dll"
/reference:"C:\makempm\5.0.0.0\mpDownload\bin\Release\mpDownload.dll"
/reference:"C:\makempm\5.0.0.0\mpStatus\bin\Release\mpStatus.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll"
/reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll"
/reference:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll"
/directory:"C:\makempm\5.0.0.0\mpConfiguration\bin\Release"
/directory:"C:\makempm\5.0.0.0\mpDownload\bin\Release"
/directory:"c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5"
/directory:"c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"
/directory:"C:\makempm\5.0.0.0\mpStatus\bin\Release"
/directory:"C:\makempm\5.0.0.0\mpCommon\bin\Release"
/ruleSet:"=C:\makempm\5.0.0.0\myproduct\..\myproduct.ruleset"
/rulesetdirectory:"C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets"
/rule:"-C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules"
/searchgac
/ignoreinvalidtargets
/forceoutput
/successfile
/ignoregeneratedcode
/saveMessagesToReport:Active
/targetframeworkversion:v3.5
/timeout:120
そして、すべて問題ありません:
コード分析の完了 -- 0 エラー、0 警告