In my C# file I want to have a preprocessor condition like this:
#if DEMO
ShowSplash();
#endif
I'm running this command from command line:
MSBuild MySolution.sln /p:Configuration=Release /p:Platform="Any CPU" /p:DEMO=1
Then, in MyProject.csproj file I have the following:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DefineConstants>TRACE;DEMO=$(DEMO)</DefineConstants>
</PropertyGroup>
But the preprocessor seems to skip my splash code. (I'm aware of the difference between "Any CPU" and "AnyCPU". I never touched that, so I'm quite sure Visual Studio doesn't care about the space.)
DEMO is not defined? The same construct seems to work in other project types (e.g. .wixproj) What am I missing here?
First, you should only define (and test in your code) the symbol, here: DEMO
Then, you should conditionally add your symbol to existing symbols (those eventualy defined in project's properties):
In .csproj file, after first item <DefineConstants> or creating another <PropertyGroup> section, add line:
<DefineConstants Condition="'$(DEMO)'=='1'">$(DefineConstants);DEMO</DefineConstants>
PS: this is a tested solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With