VSTO大会解决问题

问题描述 投票:1回答:3

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

我通过在Addins.Designer.cs类中把处理程序分配给AppDomain.CurrentDomain.AssemblyResolve事件来解决这个问题,但是大家都知道,这个代码是自动生成的。

有没有办法像在AddIn_Startup处理程序中一样,尽快将AssemblyResolve处理程序分配到不是自动生成的文件中?

.net vsto assemblyresolve
3个回答
0
投票

请注意,你开发的是一个add-in,而不是一个独立的应用程序,你可以在运行时管理引用,做任何你需要的事情。你可以考虑将绑定信息添加到应用程序的配置文件中(在你的例子中,它将是Word.exe.config)。


0
投票

你可以在AddIn_Startup代码中添加处理程序。代码是用VB.net编写的。

AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf AssemblyResolver

0
投票

我刚刚遇到了这个问题,从搜索中登陆到这里,然后看了看四周的 VSTO Microsoft.Tools AddinBase类。 (我希望这是正确的链接).在任何情况下,我都是在重写Begininit并在那里设置AppDomain.CurrentDomain.AssemblyResolve。 在任何情况下,我都会覆盖Begininit并在那里设置AppDomain.CurrentDomain.AssemblyResolve。 对于我的情况来说,这已经足够早的加载我的引用了。

然而,请注意,如果需要的话,addin仍然可以尝试加载你的汇编(但失败了),这甚至可能发生在Begininit之前。例如,如果你在ThisAddin类中引用了你的汇编的Enum或Const。

© www.soinside.com 2019 - 2024. All rights reserved.