Instead of defining a symbol using the #define directive, you can define symbols by passing them in as compiler options.  If you are using csc.exe, you can pass in defined symbols like this:
 This is extremely useful. You would not want to keep commenting and uncommenting your #define directives, although they are usually conveniently located near the top of the source file.
c:\expt>csc /define:DEBUG,SHOW_ON_CONSOLE test.cs
You can use the short form /d: instead of /define:. Symbols to be defined are separated by commas (with no spaces between). Remember that symbols are case sensitive. If your #if directives are expecting the DEBUG symbol, passing in debug (lower case) via the /define option ...