带有DefineConstants的解决方案文件的MsBuild

时间:2011-02-19 06:41:33

标签: c# visual-studio-2008 msbuild

目前,在我的自动构建中,我使用devenv.exe来构建我的解决方案文件:

devenv /build myproject1.sln

现在,我想创建我的应用程序的两个版本,正常版本和轻量版本。这两个版本的源代码是相同的,只是在轻量版本中,某些功能被禁用,为此我使用#define lite预处理器指令(在csproject文件中,这些常量在{{1}下定义}物业组)。

在MsBuild中 - 或者只是正常的devenv构建 - 是否可以指定我想要的符号是否应该存在于构建中?我问这个的原因是因为我想第一次使用DefineConstants预处理程序指令(对于lite版本)构建我的sln文件,第二次使用lite预处理程序指令(完整版)。

2 个答案:

答案 0 :(得分:29)

在项目文件中,为精简版

添加新的 PropertyGroup 部分
<PropertyGroup Condition="'$(LiteVersion)'=='true'">
   <DefineConstants>$(DefineConstants);lite</DefineConstants>
</PropertyGroup>

DefineConstants 的所有定义中删除 lite

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

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

set LiteVersion=true
devenv.exe myproject1.sln

答案 1 :(得分:2)

在sln文件中创建两个配置 - 一个用于Lite,另一个用于Normal。在Lite配置中,通过Project Properties对话框定义预处理器指令。

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