title: How should I manage .Net and Visual Studio versions?
body: <p>Microsoft appears not to have consdiered the problems in managing Visual Studio projects when multiple versions of .Net or multiple versions of Visual Studio are in use.  Can anyone recommend ways to manage these intelligently?</p>
  
  <p>We have quite a bit of code that was written using Visual Studio 2008.  If we want to update the code and choose to use VS 2012, VS does a one-way upgrade, and we can't use VS 2008 on those projects any more.  We do have at least one machine running Windows Server 2003, and while it's not normally used for development, we do sometimes use it, and we can't install VS 2012 on it.</p>
  
  <p>Worse, we have customers with computers of various operating systems, so we can't count on having a specific version of .Net.  It would be nice to be able to select the .Net version in the project configuration, but we can't.  The first tab of the Projects screen contains the .Net version selection, and that screen does not change with different project configurations.  </p>
  
  <p>I can't even really use the same source code files, because there are differences in available libraries between .Net 4.5 and earlier versions.  The one that comes to mind is System.Threading.Tasks, which is included by default in .Net 4.5 files, and which isn't available in earlier .Net versions.  And I don't know of any way to use compiler constants to differentiate between operating systems or .Net versions in C# as is (or at least used to be) possible in C++.</p>