title: Can I have my assembly reference any version of another assembly?
body: <ul>
  <li>I am developing a class library (<code>MyClassLibrary</code>).</li>
  <li>I depend on a third party class library (<code>ThirdPartyClassLibrary</code>).</li>
  <li>I need to use the same version of <code>ThirdPartyClassLibrary</code> as my users.  e.g., if I set a static value in <code>ThirdPartyClassLibrary</code> the user needs to see that change.</li>
  <li>Users of my class may be depending on any one of 4 different versions of <code>ThirdPartyClassLibrary</code>.</li>
  <li><code>ThirdPartyClassLibrary</code> is large, I do not want to distribute it with my software.</li>
  <li>I have reflected on all 4 versions of <code>ThirdPartyClassLibrary</code> and validated that the things I will be doing with them are compatible across all versions (interfaces are the same, methods signatures are the same, etc.).</li>
  <li>I need calls into <code>ThirdPartyClassLibrary</code> to be performant!  I can't reflect on everything every time I need to call something.</li>
  <li><code>MyClassLibrary</code> will be loaded at runtime, so I can't expect users to mess with assembly binding redirects or other develop-time settings (or any settings at all, my users are resistant to doing anything).</li>
  <li>I would like to benefit from compile-time checking of my code, so ideally no reflection at all.</li>
  </ul>
  
  <p>How can I write <code>MyClassLibrary</code> such that when it is loaded into the process everything works correctly with whichever version of <code>ThirdPartyClassLibrary</code> the user has loaded?</p>