您可以从 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 命令行参考
是否可以在未安装 VS 的情况下从 MSBuild 命令行运行 FxCop 代码分析?