更新 3我现在发现当 FinalBuilder 调用 MSBUILD 时似乎调用了旧版本的 FxCop。使用命令行,使用 VS2010 版本的 FxCop 运行时一切正常,但是当我对 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 个警告