引用同一程序集的多个版本

时间:2015-08-19 11:04:28

标签: c# .net dll assembly-binding-redirect

是否可以在同一进程中加载​​同一个强命名程序集的多个版本?有很多类似的问题,但没有答案似乎有效。

我问的原因是我们需要使用newer version (4.0.0.0) SomeAssembly.dll,但有些引用的dll取决于此dll的older version (3.0.0.0)

我尝试过使用下面的程序集绑定重定向配置,但最终出现了编译错误,因为我的程序集依赖于较新版本的dll而这个配置完全覆盖了链接,只有{正在使用{1}}。我希望这会在运行时失败。编译器是否在这里使用配置文件?

按照惯例在项目中引用

version 3.0.0.0Version 4.0.0.0被复制到项目输出中。

Version 3.0.0.0

1 个答案:

答案 0 :(得分:2)

尝试删除行

<bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" />

并将程序集放在BIN文件夹中的单独文件夹中。 e.g。

<dependentAssembly>
    <assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" />
    <codeBase version="4.0.0.0" href="V4\SomeAssembly.dll" />
    <codeBase version="3.0.0.0" href="V3\SomeAssembly.dll" />
  </dependentAssembly>