更改装配解析器搜索顺序

时间:2012-04-05 15:42:52

标签: c# assemblies

这与昨天我问的a question有关。简而言之,我遇到的问题是我有两个冲突版本的程序集。一个在appbase中,另一个在PrivateBinPath中。

根据我的理解,程序集解析器首先搜索appbase,然后在私有路径中搜索。问题在于,根据我通过运行融合日志得到的结果,如果解析器在appbase中找到错误的版本,则会抛出一个错误,说明版本不匹配并停止探测。

我需要使用位于appbase中的引用,因此设置PrivateBinPathProbe不是一个选项,因为它排除了appbase。有没有办法先改变在PrivateBinPath中搜索的顺序?

作为旁注,我不明白为什么如果找到错误的版本,解析器就会放弃。

2 个答案:

答案 0 :(得分:2)

AssemblyResolve事件仅在前一次查找未成功时调用。因此,您必须将Yahia的方法与前一个问题的答案结合起来:

  1. 设置PrivateBinPathProbe,以便Fusion不会查看AppBase目录。
  2. 实施解析AppBase目录路径的AssemblyResolve事件。
  3. ...
  4. 的利润!
  5. 第一步很重要,以便事件被触发。

答案 1 :(得分:1)

AFAIK无法做到这一点......

然而,您可以实施一种解决方法:

另一种选择是将依赖项嵌入到EXE / DLL中,因此根本不需要搜索任何路径 - 有关实现此目的的选项,请参阅here