2011-02-19 95 views
16

目前,在我的自动生成,我用的devenv.exe构建我的解决方案文件:的MSBuild与解决方案文件与DefineConstants

devenv /build myproject1.sln 

现在,我要创建我的应用程序的两个版本,普通版,和轻的版本。这两个版本的源代码是相同的,只是在轻型版本中禁用了一些功能,为此我使用#define lite预处理器指令(在csproject文件中,这些常量在DefineConstants属性组下定义)。

在MsBuild中 - 或者只是普通的devenv构建 - 是否可以指定我想要的符号是否应该出现在构建中?我之所以问这个问题是因为我想第一次使用lite预处理器指令(对于lite版本)构建我的sln文件,而第二次没有使用lite预处理器指令(对于完整版本)。

回答

29

在项目文件中添加新的的PropertyGroup节精简版的版本

<PropertyGroup Condition="'$(LiteVersion)'=='true'"> 
    <DefineConstants>$(DefineConstants);lite</DefineConstants> 
</PropertyGroup> 

DefineConstants所有定义删除精简版

MSBuild.exe myprojeect1.sln 
MSBuild.exe myprojeect1.sln /p:LiteVersion=true 

您可以在VS中创建其他配置以在各个版本之间切换。但是,当您忘记将标志添加到Lite配置时,可能会导致配置不匹配。我可以建议更优雅的解决方案。创建.bat文件或更改链接以运行myproject1.sln:

set LiteVersion=true 
devenv.exe myproject1.sln 
2

在sln文件中创建两个配置 - 一个用于Lite,一个用于Normal。在Lite配置中,通过“项目属性”对话框定义预处理器指令。

然后,在使用devenv.com进行构建时,指定要在其中构建的正确配置。

+0

您想举一个关于如何操作的例子吗? – Graviton 2011-02-19 06:51:39

+0

为什么这个答案被降低了? – Anttu 2012-10-31 07:49:11

相关问题