您可以从 msbuild.exe 命令行关闭条件编译符号吗?

Posted

技术标签:

【中文标题】您可以从 msbuild.exe 命令行关闭条件编译符号吗?【英文标题】:Can you turn off conditional compilation symbols from msbuild.exe command line? 【发布时间】:2011-07-11 13:20:17 【问题描述】:

我们在 C# 组件中定义了 CODE_ANALYSIS,以便 FxCop 在我们在开发盒上构建它们时对其进行分析。我想在 FxCop 在我们的构建系统中运行时关闭它。构建系统显然是使用 msbuild.exe 命令行命令。有没有办法从这个可执行文件中修改条件编译符号?如果没有,有没有人知道我的问题的任何其他可能的解决方案(除了手动关闭它)?

谢谢。

【问题讨论】:

【参考方案1】:

CODE_ANALYSIS 编译符号控制是否将代码中包含的 SuppressMessageAttribute 实例复制到已编译的程序集中。它不控制 FxCop 是否运行。如果您想覆盖项目级别的 MSBuild 属性,例如 RunCodeAnalysis(它是控制 FxCop 是否在 MSBuild 下运行的野兽),您应该能够使用 MSBuild.exe /property 命令行开关。例如:

msbuild.exe <...> /property:RunCodeAnalysis=true

【讨论】:

我发现我们实际上是在使用构建后命令来启动 FxCop。不过,您的回答很有帮助。谢谢。【参考方案2】:

为什么需要关闭它们?设置项目的最佳方式是仅为调试配置定义 CODE_ANALYSIS。发布版本不会设置此值。这样,当您构建生产安装时,它们将不会引用 FxCop。

【讨论】:

以上是关于您可以从 msbuild.exe 命令行关闭条件编译符号吗?的主要内容,如果未能解决你的问题,请参考以下文章

Docs-VisualStudio-MSBuild-MSBuild参考:MSBuild 命令行参考

MSBuild a .dbproj 似乎运行了两次

是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?

PowerShell - 启动进程和命令行开关

SonarQube.Scanner.MSBuild.exe:如何指定sonar.sources?

带有VS2012的Windows 8上的msbuild.exe位置