Search code examples
c#debuggingreleasecompiler-directives

C# if/then directives for debug vs release


In Solution properties, I have Configuration set to "release" for my one and only project.

At the beginning of the main routine, I have this code, and it is showing "Mode=Debug". I also have these two lines at the very top:

#define DEBUG 
#define RELEASE

Am I testing the right variable?

#if (DEBUG)
            Console.WriteLine("Mode=Debug"); 
#elif (RELEASE)
            Console.WriteLine("Mode=Release"); 
#endif

My goal is to set different defaults for variables based on debug vs release mode.


Solution

  • DEBUG/_DEBUG should be defined in VS already.

    Remove the #define DEBUG in your code. Set preprocessors in the build configuration for that specific build.

    The reason it prints "Mode=Debug" is because of your #define and then skips the elif.

    The right way to check is:

    #if DEBUG
        Console.WriteLine("Mode=Debug"); 
    #else
        Console.WriteLine("Mode=Release"); 
    #endif
    

    Don't check for RELEASE.