Define conditional compilation symbols at Visual Studio solution level

By | February 7, 2018

In Visual Studio 2017, you can define the conditional compilation symbols at project level by going to Project Properties > Build > General > Conditional compilation symbols.

  • If you want to share these symbols across multiple projects, it is not possible using the GUI. Here is what needs to be done. I got the answer specifically from this SO question but it did not list the exact steps so I am giving all the steps here
  • Close the Visual Studio Solution
  • In solution directory, create a file “CommonSettings.targets” and add following text in that file. Change the MY_CONST_1, MY_CONST_2 and MY_CONST_3 to your constants
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
    <DefineConstants>$(DefineConstants);MY_CONST_1;MY_CONST_2;MY_CONST_3</DefineConstants>
    </PropertyGroup>
    </Project>
    
  • Now go into each project directory and open myproject.csprj or other project file in text editor.
  • Locate the “</Project>” at the very bottom.
  • Right before this closing xml tag, add following xml tag, save the file in text editor and close the file.
    <Import Project="$(SolutionDir)CommonSettings.targets" />
    
  • Now open the solution in Visual Studio and if you look at Project Properties > Build > General > Conditional compilation symbols, you will see MY_CONST_1, MY_CONST_2 and MY_CONST_3.
  • If for any reason, Visual Studio does not reflect the defined constants even after Clean/Build/Rebuild, refresh the project.
    Visual Studio Refresh Project

Leave a Reply

Your email address will not be published. Required fields are marked *