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

C# 正在将.NET程序集引用解析为其他名称?,c#,.net,asp.net,clr-hosting,C#,.net,Asp.net,Clr Hosting,我的项目引用了Library1.dll和Library2.dllLibrary2.dll依赖于Library1.dll,但编译时使用了另一个名称Library1.Net40.dll 是否有一种好方法告诉我的应用程序重定向Library1.Net40.dll的所有引用以解析为Library1.dll?可能是类似于使用 我有一个处理AppDomain.AssemblyResolve事件的解决方案,但这有点像黑客,我希望有更好的方法来解决这个问题 编辑: 供大家参考,以下是我如何使用重定向到其他程序集

我的项目引用了Library1.dllLibrary2.dllLibrary2.dll依赖于Library1.dll,但编译时使用了另一个名称Library1.Net40.dll

是否有一种好方法告诉我的应用程序重定向Library1.Net40.dll的所有引用以解析为Library1.dll?可能是类似于使用

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

编辑:
供大家参考,以下是我如何使用重定向到其他程序集来解决此问题的。

您是否尝试过使用


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

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

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

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll. LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.dll LOG: Entering download cache setup phase. LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed WRN: Comparing the assembly name resulted in the mismatch: NAME ERR: The assembly reference did not match the assembly definition found. ERR: Setup failed with hr = 0x80131040. ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 日志:正在尝试下载新URLfile:///C:/Project/bin/Library1.dll. 日志:程序集下载成功。正在尝试安装文件:C:\Project\bin\Library1.dll 日志:进入下载缓存设置阶段。 日志:程序集名称为:Library1,版本=3.5.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED 警告:比较程序集名称导致不匹配:name 错误:程序集引用与找到的程序集定义不匹配。 错误:安装失败,hr=0x8013100。
错误:未能完成程序集的设置(hr=0x8013100)。探测终止。应用部分解析时,程序集名称必须与文件名匹配。但是,文件的位置可以不同

否则,Fusion绑定日志将报告“WRN:比较程序集名称导致不匹配:name”,并且无法绑定

(好消息:可以重命名程序集DLL以匹配程序集名称。)

例如:


这将根据版本(分别为6-10或11-12)解析
bin/Newtonsoft.Json.dll
bin/Newtonsoft.Json.12/Newtonsoft.Json.dll
。即使目录路径不同,名称也会成功匹配文件名

注意,“bin”本身是替代版本的href的一部分;根据不同于探针路径的应用程序基础进行相应调整。在IIS下运行的about中,应用程序库的级别高于bin directoy。(请参阅Fusion日志中的“LOG:Appbase=…”

不幸的是,不管有什么配置文件,MSBuild进程都不会自动接受引用程序集的目录结构。将项目设置为不“本地复制”替代程序集版本,然后将其作为辅助过程的一部分进行复制,以确保维护正确的结构。如果任何编译的程序集将备用版本作为直接引用,那么最好确保默认情况下没有一个是“复制本地”的

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll. LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.dll LOG: Entering download cache setup phase. LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed WRN: Comparing the assembly name resulted in the mismatch: NAME ERR: The assembly reference did not match the assembly definition found. ERR: Setup failed with hr = 0x80131040. ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.