#if preprocessor directive for directives other than DEBUG

Johnie Karr picture Johnie Karr · Dec 21, 2012 · Viewed 24.6k times · Source

I know that I can use preprocessor directives to check for Debug/Release by doing this:

#if DEBUG
    //debug mode
#elif
    //release mode
#endif

but what about checking for other configurations, like Test. In VB you can do this:

#If CONFIG = "Release" Then
    'Release mode
#ElseIf CONFIG = "Test" Then
    'Test mode
#ElseIf CONFIG = "Debug" Then
    'Debug mode
#End If

So, my question is in C#, how can I check for Test mode? I have some code that I want to execute if I'm in Debug AND Test, but not in Release mode, so specifically, I need a way to check for not being in Release mode. In VB I would do this:

#If Not CONFIG = "Release" Then
    'Do something here for every configuration that is not Release
#End If

Answer

Joe White picture Joe White · Dec 21, 2012

It's the same as for DEBUG, assuming that you've defined a build configuration that lists TEST in the "Conditional compilation symbols" text box (under project properties > Build tab; this is a space-delimited list).

For code that you only want to run in the TEST build configuration:

#if TEST
// ...
#endif

And for code you don't want to run in the TEST build configuration, you can either #else the above, or do this:

#if !TEST
// ...
#endif