将.NET程序集引用解析为其他名称?

Chr*_*tow 7 .net c# asp.net clr-hosting

我的项目引用了Library1.dllLibrary2.dll. Library2.dll依赖于Library1.dll,但它被编译为通过另一个名称Library1.Net40.dll引用它.

是否有一种很好的方式告诉我的应用程序重定向Library1.Net40.dll的所有引用以解析为Library1.dll?也许类似于使用<bindingRedirect>重定向版本的方式?

我有一个处理AppDomain.AssemblyResolve事件的解决方案,但它有点像黑客,我希望有更好的方法来做到这一点.

编辑:对于任何人的参考,这是我最终使用AppDomain.AssemblyResolve事件解决它以重定向到不同的程序集.

dtb*_*dtb 5

您是否尝试过使用<codeBase> 元素

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Library1.Net40"
                              publicKeyToken="..."
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="Library1.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

(未经测试;不知道它是否有效。)

CF:我把这个更新放在这里,因为评论有点长:)

好主意,谢谢。我让重定向工作但它抱怨因为名称不同,这是日志:

日志:正在尝试下载新的 URL 文件:///C:/Project/bin/Library1.dll。
LOG:程序集下载成功。正在尝试设置文件:C:\Project\bin\Library1.dll
LOG:进入下载缓存设置阶段。
日志:程序集名称为:Library1,Version=3.5.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed
警告:比较程序集名称导致不匹配:NAME
错误:程序集引用与找到的程序集定义不匹配。
ERR:安装失败,hr = 0x80131040。
ERR: 未能完成程序集的设置 (hr = 0x80131040)。探测终止。