6

在我的项目中,静态检查被禁用,但是,当我使用 cmd 运行 msbuild.exe 时,它​​会开始对每个项目进行静态检查......有没有办法通过参数禁用它?

4

3 回答 3

8

这可能有点晚了,但是因为我刚刚遇到了同样的问题并且/p:RunCodeAnalysis=false对我不起作用:

试试msbuild ... /p:CodeContractsRunCodeAnalysis=false

根据代码合同文档和我的经验,这在 2011 年 2 月有效。

于 2011-02-21T19:43:02.677 回答
2

以下应该做到这一点:

MSBuild ... /p:RunCodeAnalysis=false
于 2010-08-09T19:59:15.150 回答
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 Add new PropertyGroupinside,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)都将跳过代码和静态代码协定分析,因此您无需从命令行传递参数。

于 2013-08-22T16:01:07.557 回答