我有一个正在处理的项目,它引用了一个引用程序集的程序集,如下所示:
Me
|- A
| |- B v1.4.2
|
|- B v1.5
A 不需要引用
1.4.2
具体来说,就是大于 1.4
的任何值或者。在 A
的属性中的引用,B 说“特定版本 = False”,但是当我运行 Me
与 B v1.5
,我得到一个 FileLoadException
寻找 B v1.4.2
.但是,B v1.5
是存在的,如何让 CLR 少关心?
最佳答案
尽管绑定(bind)重定向是这里的方法,但有时这是不可能的 - 即,如果您在另一个 EXE 中加载插件。我们采用的一个实际解决方案是 Hook AppDomain.CurrentDomain.AssemblyResolve
事件,监听与 myassembly1.4.2.dll 的绑定(bind)失败(例如)并显式返回调用 System.Reflection.Assembly.LoadFrom("c:\assemblies\myassembly.1.5.0.dll")
返回的程序集反而。绑定(bind)重定向更好,但有时并不实用。
关于.net - 如何不需要特定版本的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478791/