在我的项目中,静态检查被禁用,但是,当我使用cmd运行msbuild.exe时,它会开始对每个项目进行静态检查...有没有办法,带参数来禁用它?
答案 0 :(得分:8)
这可能是一个'小'迟到,但因为我刚遇到同样的问题而且/p:RunCodeAnalysis=false
对我不起作用:
尝试msbuild ... /p:CodeContractsRunCodeAnalysis=false
。
根据the code contracts documentation以及我的经验,截止到2011年2月。
答案 1 :(得分:2)
以下应该这样做:
MSBuild ... /p:RunCodeAnalysis=false
答案 2 :(得分:1)
如果您不想将参数传递给msbuild,或者您正在使用Visual Studio构建,则可以通过一种方法来抑制静态代码合同检查和代码分析。
注意:每个* .csproj文件都包含:<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
。
对于.Net 4.0,msbuild.exe和Microsoft.CSharp.targets
路径为"C:\Windows\Microsoft.NET\Framework\v4.0.30319\"
打开Microsoft.CSharp.targets
在PropertyGroup
内添加新的Project
,例如:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<PropertyGroup>
<CodeContractsRunCodeAnalysis>false</CodeContractsRunCodeAnalysis>
<RunCodeAnalysis>Never</RunCodeAnalysis>
<CodeContractsReferenceAssembly>DoNotBuild</CodeContractsReferenceAssembly>
</PropertyGroup>
...
<!-- a lot of stuff -->
...
</Project>
这样做将模拟msbuild命令行参数(即/p:CodeContractsRunCodeAnalysis=false,RunCodeAnalysis=Never,CodeContractsReferenceAssembly=DoNotBuild
现在您PC上的所有构建(来自MSBuild和Visual Studio)都将跳过代码和静态代码协定分析,因此您无需从命令行传递args。