title: Fully understanding the .NET versions and backward compatibility
body: <p>I have a .NET 2.0 application and I plan to make a 'smart installer' which checks for the available .NET version on the user's PC and install my specific port for it.
  I saw that:</p>
  
  <ul>
  <li>Windows XP (SP2) comes with .NET 2.0</li>
  <li>Windows Vista comes with .NET 3.0</li>
  <li>Windows 7 comes with .NET 3.5</li>
  <li>Windows 8 comes with .NET 4.5</li>
  </ul>
  
  <p>As far as I know, the only thing that's not backward compatible is the CLR version, which is changed after .NET 4.0.</p>
  
  <p>So if I don't want the user to install additional framework just for my application, I should have these versions of my app:</p>
  
  <ul>
  <li>.NET 2.0 - XP (SP2 and upper), Vista (3.0 should be able to run 2.0) and 7 (3.5 should be able to run 2.0)</li>
  <li>.NET 4.0 - if someone installed 4.0 ONLY and have no other</li>
  <li>.NET 4.5 - for the users that have Windows 8 with no other .NET installed</li>
  </ul>
  
  <p>Am I right? Or 4.5/4.0 are backward compatible?</p>
  
  <p><strong>EDIT: If any of the upper data isn't right, please correct me</strong></p>