我有一个我正在研究的项目,它引用了一个引用程序集的程序集,如下所示:
Me
|- A
| |- B v1.4.2
|
|- B v1.5
A不需要具体引用1.4.2
,只需要大于1.4
左右的任何内容。在A
引用的属性中,B表示“特定版本=假”,但当我使用Me
运行B v1.5
时,我会找到FileLoadException
寻找B v1.4.2
1}}。但是,B v1.5
存在,如何减少CLR护理?
答案 0 :(得分:2)
虽然绑定重定向是这里的方法,但有时这是不可能的 - 即如果你在另一个EXE中加载插件。我们采用的一个实用解决方案是挂钩AppDomain.CurrentDomain.AssemblyResolve
事件,侦听与myassembly1.4.2.dll失败的绑定(例如),并显式返回调用System.Reflection.Assembly.LoadFrom("c:\assemblies\myassembly.1.5.0.dll")
返回的程序集。绑定重定向更好,但有时它不实用。