更新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中运行时构建失败,并出现以下错误:
运行代码分析...
Switch'/ 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个警告