title: Conditional Compilation not behaving correctly in C#
body: <p>I'm having trouble in a standard WinForms app with Conditional Compilation</p>
  
  <p>I have 2 .csproj's that reference the same Program.cs file (They live in the same folder on disk too)</p>
  
  <p>In Project1.csproj I have a conditional compilation symbol defined called CONDITION_1</p>
  
  <p>In Project2.csproj I have a conditional compilation symbol defined called CONDITION_2</p>
  
  <pre><code>static void Main()
  {
    #if CONDITION_1
      DoSomething();
    #elif CONDITION_2
      DoSomethingElse();
    #else
      DoAnotherThing();
    #endif
      ContinueDoingStuff();
  }
  </code></pre>
  
  <p>These symbols are defined the project settings for "All Configurations". <em>In my debug environment everything works great.</em> However when I do a fresh checkout of source and build on my build machine I open up Project2.exe in my decompiler and I notice that my source is like this</p>
  
  <pre><code>static void Main()
  {
      DoAnotherThing();
      ContinueDoingStuff();
  }
  </code></pre>
  
  <p>If I open up the solution file in Visual Studio and do a regular <strong>build</strong> (No clean, no rebuild, no code changes)</p>
  
  <p>I open up the exe and notice the correct decompiled source for Project2.exe...</p>
  
  <pre><code>static void Main()
  {
      DoSomethingElse();
      ContinueDoingStuff();
  }
  </code></pre>
  
  <p>Any ideas? Is there a possibility of conditional symbols not being set correctly at compile time?</p>