VSTO AssemblyResolve问题

时间:2015-04-16 13:12:34

标签: .net vsto assemblyresolve

我们为Word开发了一个VSTO插件,我们遇到的问题是插件的最早入口点是AddIn_Startup处理程序。问题是对于我们实现的AssemblyResolve处理程序来说,这个处理程序调用太迟了,无法找到所需的程序集。

我通过将处理程序分配给Addins.Designer.cs类中的AppDomain.CurrentDomain.AssemblyResolve事件来解决问题,但是众所周知,这段代码是自动生成的。

有没有办法在AddIn_Startup处理程序和非自动生成的文件中更快地分配AssemblyResolve Handler?

3 个答案:

答案 0 :(得分:0)

请注意,您开发了一个加载项,而不是一个独立的应用程序,您可以在运行时管理引用并执行您需要的任何操作。您可以考虑将绑定信息添加到应用程序配置文件中(在您的情况下,它将是Word.exe.config)。

答案 1 :(得分:0)

您可以在AddIn_Startup代码中添加处理程序。代码在VB.net中。

AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf AssemblyResolver

答案 2 :(得分:0)

我刚遇到这个问题,从搜索中落到这里,然后环顾了VSTO Microsoft.Tools AddinBase Class(我希望这是正确的链接)。无论如何,我都覆盖了Begininit并在那里设置AppDomain.CurrentDomain.AssemblyResolve。就我而言,现在还可以载入我的参考书。

但是,请注意,加载项仍可以在需要时尝试加载程序集(并失败),并且即使在Begininit之前也可能发生。例如,如果您在ThisAddin类中从程序集中引用枚举或常量。