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

C# 引用同一程序集的多个版本,c#,.net,dll,assembly-binding-redirect,C#,.net,Dll,Assembly Binding Redirect,是否可以在同一进程中加载同一强名称程序集的多个版本?有很多类似的问题,但似乎没有一个答案是有效的 我询问的原因是我们需要使用SomeAssembly.dll的较新版本(4.0.0.0),但是一些引用的dll依赖于此dll的较旧版本(3.0.0.0) 我曾尝试使用下面的程序集绑定重定向配置,但最终导致编译错误,因为我的程序集依赖于较新版本的dll,并且此配置完全覆盖链接,并且仅使用version 3.0.0。我预计这在运行时会失败。编译器正在使用这里的配置文件吗 4.0.0.0版按照惯例在项目中引

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

我询问的原因是我们需要使用
SomeAssembly.dll的
较新版本(4.0.0.0)
,但是一些引用的dll依赖于此dll的
较旧版本(3.0.0.0)

我曾尝试使用下面的程序集绑定重定向配置,但最终导致编译错误,因为我的程序集依赖于较新版本的dll,并且此配置完全覆盖链接,并且仅使用
version 3.0.0
。我预计这在运行时会失败。编译器正在使用这里的配置文件吗

4.0.0.0版
按照惯例在项目中引用<代码>版本3.0.0.0
被复制到项目输出中

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="SomeAssembly" publicKeyToken="123" culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0" newVersion="3.0.0.0" />
        <codeBase version="4.0.0.0" href="bin/SomeAssembly.dll" />
        <codeBase version="3.0.0.0" href="SomeAssembly.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

尝试删除行

<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>

尝试删除行

<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>

尝试删除行

<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>

尝试删除行

<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>


在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?