在我的项目中,静态检查被禁用,但是,当我使用 cmd 运行 msbuild.exe 时,它会开始对每个项目进行静态检查......有没有办法通过参数禁用它?
3 回答
这可能有点晚了,但是因为我刚刚遇到了同样的问题并且/p:RunCodeAnalysis=false
对我不起作用:
试试msbuild ... /p:CodeContractsRunCodeAnalysis=false
。
根据代码合同文档和我的经验,这在 2011 年 2 月有效。
以下应该做到这一点:
MSBuild ... /p:RunCodeAnalysis=false
如果您不想将参数传递给 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
Add new PropertyGroup
inside,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)都将跳过代码和静态代码协定分析,因此您无需从命令行传递参数。