title: Compatibility of .NET assemblies compiled using different MSBuild Toolset (ToolsVersion)
body: <p><strong>Background:</strong>
  My company ships a large C# .NET based product that was developed and built using VS2010 and TFS2010. The assemblies we shipped to customers were compiled using:</p>
  
  <ul>
  <li>Tools Version: 4.0</li>
  <li>Target Framework: 4.0</li>
  </ul>
  
  <p>We are now upgrading our development infrastructure to VS2013 and TFS2013. This will update the MSBuild Toolset (ToolsVersion) in our build environment from 4.0 to 12. </p>
  
  <p>For future builds, we intend to use the upgraded Tools Version, but will not change the Target Framework, so the assemblies we ship to customers will be compiled using:</p>
  
  <ul>
  <li>Tools Version: 12.0</li>
  <li>Target Framework: 4.0</li>
  </ul>
  
  <p><strong>Issue:</strong>
  We frequently patch existing customer installations. All these installations were compiled using Tools Version 4.0. After we upgrade, our patched assemblies would be compiled using Tools Version 12.</p>
  
  <p>I can't fathom that this will cause any compatibility issues. However, my manager calls himself "old school" and believes that you should never change compilers for existing installations (even .NET applications). He is advocating that we do not upgrade our build infrastructure used to compile patches for existing customer installations. We're having challenges convincing him otherwise.</p>
  
  <p>We are aware that you can specify the Tools Version in your .csproj files. To me - the mere fact that each project within a solution can specify a different Tools Version entails that the assemblies <em>must</em> be compatible. </p>
  
  <p><strong>Question:</strong>
  Are there any known issues of .NET assemblies being incompatible with each other if they have been built using different Tools Versions? </p>