目前,在我的自动构建中,我使用devenv.exe来构建我的解决方案文件:
devenv /build myproject1.sln
现在,我想创建我的应用程序的两个版本,正常版本和轻量版本。这两个版本的源代码是相同的,只是在轻量版本中,某些功能被禁用,为此我使用#define lite预处理器指令(在csproject文件中,这些常量在{{1}下定义}物业组)。
在MsBuild中 - 或者只是正常的devenv构建 - 是否可以指定我想要的符号是否应该存在于构建中?我问这个的原因是因为我想第一次使用DefineConstants
预处理程序指令(对于lite版本)构建我的sln
文件,第二次使用lite
预处理程序指令(完整版)。
答案 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进行构建时,请指定要构建的正确配置。