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>
在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?在新版本的库中是否有相同的名称空间和类名?