0

在编写 VSTO 4.0 加载项时,我遇到了链接程序集的程序集解析问题。

我有组件 A、B、C 和 D;其中程序集 A 引用 B 和 B 引用 C 和 D。在构建过程中,我将程序集 C 和 D 链接到程序集 B。然后在程序集 A 中,我们使用重定向程序集绑定的两个过程,都在程序集 A 的静态构造函数中完成。

  1. 从程序集 A 中挂钩,AppDomain.CurrentDomain.AssemblyResolve += MyResolver以将 C 和 D 的绑定重定向回 B(这处理了 80% 的用例。)
  2. 然后从装配 AI 调用中解决另外 20%(或者我认为)Assembly.LoadFrom( <assembly B> )

现在我遇到了一个问题,即 VSTO 4.0 应用程序在尝试从程序集 A 初始化对象时出现以下异常。

无法加载文件或程序集“C、Version=#、Culture=neutral、PublicKeyToken=#”或其依赖项之一。该系统找不到指定的文件。

当我查看加载到 AppDoamin 中的模块时,我看到了程序集 A 和 B,就像我看到一个正常工作的应用程序一样;但是,该Appdomain.CurrentDomain.AssemblyResolve事件永远不会触发,或者至少我的事件从未private static Assembly MyResolver( Object sender, ResolveEventArgs args )被输入。

在我的搜索中,我发现似乎最符合我的问题的答案就在这里......

http://widequestion.com/question/vsto-assemblyresolve-issue/

话虽如此,他对“别无他法”的回答似乎……嗯,错了,但我无法反驳。有谁知道我如何能够在这种情况下控制程序集重定向?

4

0 回答 0