在我的C#
文件中,我希望有一个像这样的预处理器条件:
#if DEMO
ShowSplash();
#endif
我正在从命令行运行此命令:
MSBuild MySolution.sln /p:Configuration=Release /p:Platform="Any CPU" /p:DEMO=1
然后,在MyProject.csproj
文件中,我有以下内容:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DefineConstants>TRACE;DEMO=$(DEMO)</DefineConstants>
</PropertyGroup>
但预处理器似乎跳过了我的启动代码。 (我知道“Any CPU”和“AnyCPU”之间的区别。我从未接触过,所以我很确定Visual Studio不关心空间。)
DEMO
未定义?相同的构造似乎适用于其他项目类型(例如.wixproj
)我在这里缺少什么?
答案 0 :(得分:1)
首先,您应该只在以下位置定义(并在代码中测试)符号:DEMO
然后,您应该有条件地将符号添加到现有符号(最终在项目属性中定义的符号):
在.csproj
文件的第一项<DefineConstants>
之后或创建另一个<PropertyGroup>
部分之后,添加以下行:
<DefineConstants Condition="'$(DEMO)'=='1'">$(DefineConstants);DEMO</DefineConstants>
PS:这是一个经过测试的解决方案。