title: Referencing multiple versions of the same assembly
body: <p>Is it possible to have multiple versions of the same strongly named assembly loaded in the same process? There is plenty of similar questions, but non of the answers seem to work.</p>
  
  <p>The reason I'm asking is we need to use <code>newer version (4.0.0.0)</code> of <code>SomeAssembly.dll</code>, but some referenced dlls depend on the <code>older version (3.0.0.0)</code> of this dll.</p>
  
  <p>I have tried using the below assembly binding redirection configuration, but ended up with <em>compilation</em> errors, because my assemblies depend on a newer version of the dll and this configuration is completely overriding the linkage and only <code>version 3.0.0.0</code> is being used. I would expect this to fail at run-time. Is compiler using the config files here?</p>
  
  <p><code>Version 4.0.0.0</code> is referenced in project as per usual. <code>Version 3.0.0.0</code> is copied to the project output.</p>
  
  <pre><code>  &lt;runtime&gt;
      &lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt;
        &lt;dependentAssembly&gt;
          &lt;assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" /&gt;
          &lt;bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" /&gt;
          &lt;codeBase version="4.0.0.0" href="bin/SomeAssembly.dll" /&gt;
          &lt;codeBase version="3.0.0.0" href="SomeAssembly.dll" /&gt;
        &lt;/dependentAssembly&gt;
      &lt;/assemblyBinding&gt;
    &lt;/runtime&gt;
  </code></pre>