2

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 警告

4

0 に答える 0