目前,在我的自动构建中,我使用 devenv.exe 来构建我的解决方案文件:
devenv /build myproject1.sln
现在,我想为我的应用程序创建两个版本,普通版和轻量版。这两个版本的源代码是一样的,只是在轻版本中禁用了一些功能,为此我使用了#define lite。预处理器指令(在 csproject 文件中,这些常量在 DefineConstants
属性组下定义)。
在 MsBuild 中——或者只是正常的 devenv 构建——是否可以指定我想要的符号是否应该出现在构建中?我问这个的原因是因为我想第一次使用 lite
预处理器指令(对于精简版)构建我的 sln
文件,第二次,没有 lite
预处理器指令(完整版)。
最佳答案
在您的项目文件中为精简版添加新的PropertyGroup部分
<PropertyGroup Condition="'$(LiteVersion)'=='true'">
<DefineConstants>$(DefineConstants);lite</DefineConstants>
</PropertyGroup>
从 DefineConstants 的所有定义中删除 lite。
MSBuild.exe myprojeect1.sln
MSBuild.exe myprojeect1.sln /p:LiteVersion=true
您可以在 VS 中创建额外的配置以在版本之间切换。但是当您忘记向精简配置添加标志时,它可能会导致配置不匹配。我可以建议更优雅的解决方案。创建 .bat 文件或更改链接以运行 myproject1.sln:
set LiteVersion=true
devenv.exe myproject1.sln
关于c# - 带有 DefineConstants 的解决方案文件的 MsBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049323/