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