3

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

据我了解,程序集解析器首先搜索应用程序库,然后在私有路径中搜索。问题是,根据我通过运行融合日志得到的结果,如果解析器在应用程序库中发现错误的版本,它会抛出一个错误,指出版本不匹配并停止探测。

我需要使用位于应用程序库中的引用,因此设置 PrivateBinPathProbe 不是一个选项,因为它不包括应用程序库。有没有什么办法可以先更改在 PrivateBinPath 中搜索的顺序?

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

4

2 回答 2

2

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

  1. 设置PrivateBinPathProbe为使 Fusion 不会在 AppBase 目录中查找。
  2. 实现一个AssemblyResolve事件来解析 AppBase 目录的路径。
  3. ...
  4. 利润!

第一步很重要,这样事件才会被触发。

于 2012-04-05T16:14:41.260 回答
1

AFAIK 没有选择这样做...

但是,您可以实施一种解决方法:

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

于 2012-04-05T15:47:42.387 回答