title: How to configure a VS2012 solution for x86 and x64 simultaneously
body: <p>We have a VS2012 .NET 4 product that has 2 different SKU's A and B which we currently build for x86 only.
  We also have the usual Configurations <code>Debug</code> and <code>Release</code> meaning we have 4 configurations currently.</p>
  
  <ul>
  <li>DebugA  </li>
  <li>DebugB  </li>
  <li>ReleaseA  </li>
  <li>ReleaseB</li>
  </ul>
  
  <p>Looking into one of the .csproj files it looks something like this</p>
  
  <pre><code>&lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugA|x86' "&gt;
      &lt;OutputPath&gt;..\bin\DebugA\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt; 
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseA|x86' "&gt;
      &lt;OutputPath&gt;..\bin\ReleaseA\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt; 
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugB|x86' "&gt;
      &lt;OutputPath&gt;..\bin\DebugB\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt; 
  &lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseB|x86' "&gt;
      &lt;OutputPath&gt;..\bin\ReleaseB\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt;
  </code></pre>
  
  <p>Obviously adding x64 would double this from 4 to 8 different combinations, and VS also seems to add AnyCPU platform configs whenever it feels like it. Ensuring that all 8 are correctly configureed in 30+ projects takes a lot of clicking around in VS, and it is really easy to make mistakes.</p>
  
  <p>I have read a few other SO questions where the problem of multi targeting is solved, and one of the suggestions for including different referencs for different platforms involved using ${Platform} in the reference path. I figured I could do something similar for my project config, so I tried this when trying to do multi-platform:</p>
  
  <pre><code>&lt;PropertyGroup Condition=" '$(Configuration)' == 'DebugA' Or '$(Configuration)' == 'DebugB' "&gt;
       &lt;OutputPath&gt;..\bin\${Platform}\${Configuration}\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt; 
  &lt;PropertyGroup Condition=" '$(Configuration)' == 'ReleaseA' Or '$(Configuration)' == 'ReleaseB' "&gt;
       &lt;OutputPath&gt;..\bin\${Platform}\${Configuration}\&lt;/OutputPath&gt;
  &lt;/PropertyGroup&gt; 
  </code></pre>
  
  <p>Which, in theory, should give me what I need for all 8 different combinations with just two blocks. But looking in VS now I can't see neitehr x86 nor x64 as available build platforms for the project. It looks as if the only way VS actually stores the build platforms is by encoding them as the freaking conditions on the propertygroups? Say it aint so...</p>
  
  <p>Is there no way to make a "nice" looking multi platform .csproj that will work well with VS? </p>
  
  <p>Could I create the .csprojs and then decide NOT to edit them in VS, trusting that msbuild will use the correct platforms, even though VS can't show any platforms in the property windows of the individual projects? </p>
  
  <p><strong>Edit:</strong></p>
  
  <p>It seems the queston was a bit confusing: to be clear, I want to know how to set up, maintain and overview the configuration of projects, and the build configuration of my solution, when there are many projects and eight combinations of config|platform. I know how to do this manually, but not without losing my mind or making a mistake on one of 200+ property pages.</p>