使用MSBuild 从命令行定义预处理器值
我需要创建一个包含多个项目的现有大型应用程序的演示版本。 我想使用现有的项目,并通过预处理器指令中性化function
#if DEMO mycode.NeuterNow(); #endif
我们正在使用MSBuild构建我们的应用程序,我理想地使用以下内容:
MSBuild -DefineProperty:DEMO MySolution.sln
这样的function是否存在?
这是一个副本 ,是的,/ p:DefineConstants工作正常,配置器是正确的,这将覆盖已经在项目文件中定义的所有条件符号(这是很好的恕我直言),所以你必须定义它们所有。
尝试
msbuild /p:DefineConstants=DEBUG;DEMO MySolution.sln
您必须包含DEBUG或RELEASE以及已在解决方案文件中定义的任何其他常量,但我认为这应该有效。 免责声明:我自己从未尝试过。
我在寻找自己的解决方案时发现了一些有趣的东西,我想我会分享。
MSBuild中的/ p指令不仅限于构建文件中已存在的属性。 你可以用它来设置任何东西。
因此,例如,如果您使用$(FeatureSet)引导预处理程序指令,然后将MSBuild称为,例如
MSBuild solution.sln /p:FeatureSet=DEMO
它相应地得到#defined,而不必手动破坏并重新指定您运行的任何其他预处理程序指令。
我在VS2010中validation了这个function。 对于如何在没有MSBuild的Visual Studio内完成的构建定义FeatureSet不太确定。