How to set project wide #define in C#

Brett Allen picture Brett Allen · Jan 3, 2010 · Viewed 12.4k times · Source

I have several classes in a project which need to only be in certain builds of the application which are currently not ready for release or debug.

To prevent these classes from being used, I want to set around them this:

#if USE_MYCLASS
// Code here...
#endif

Unfortunately, I don't know how to setup a project-wide #define.

Is there functionality in Visual Studio to set project-wide definitions?

If there is, though I don't need it right now, is there a functionality to set solution-wide definitions?

If there is no functionality for such (seeing as C# does not have include files, I suppose it's possible), is there any method or plugin of doing this functionality without using the command line compiler and /D?

Answer

Marc Gravell picture Marc Gravell · Jan 3, 2010

You can do that in the project properties, but not in source code.

Project Properties => Build => Conditional compilation symbols

You can specify whichever symbols you need (space delimited, but IIRC is is quite forgiving). Note that DEBUG and TRACE can also be toggled with a checkbox.

I have some projects with multiple "release" build configurations, with different symbols in each (for building 2.0 vs 3.0 vs 3.5 versions - see <DefineConstants> here)