如何改善VSTO2SE MS Office加载项的冷启动性能?

时间:2008-10-29 21:11:26

标签: vsto add-in office-2007 office-2003

如果您创建一个针对Microsoft Office Excel 2003的简单“Hello World”VSTO2SE加载项,则在冷启动时加载需要15秒。在此期间,Excel完全没有响应。

Excel 2003中的冷启动时间总是很差。我在Excel 2007中看到了一台启动时间即时的测试机器,但我所有其他测试机器需要15秒才能初始化。 (测试环境 - windows xp pro + VSTO2SE运行时+ XP SP3)

如何改善这种表现?

我已经尝试过的事情没有成功:

  1. Disasble CRL(证书撤销列表)检查 - 这似乎没有帮助,而且我不能指望用户这样做。

  2. 使用NGEN创建本机组件 a)似乎Office 2003从不使用本机程序集。 b)我的office 2007测试客户端快速启动,即使使用IL程序集也是如此。 c)即使我知道我的整个依赖树,仍然存在可能没有原生图像的VSTO依赖。

  3. 延迟加载加载项 - 这是我从Microsoft获得的解决方法“库存响应”。问题是,我的加载项是从菜单项启动的 - 如何延迟加载加载项仍然可以获取菜单?我可以使用VB6加载项来绘制菜单并通过互操作转发调用,但是为什么我甚至会首先编写VSTO加载项?

  4. 编辑 - 是的,这是加载项中“连接”事件的唯一一行。 (实际上是消息框)..消息框出现前需要整整15秒。 - J戴维斯

2 个答案:

答案 0 :(得分:1)

你会在冷启动时受到打击,因为它必须首次加载所有程序集。

如果热启动明显加快,那么你唯一真正的选择就是

1)在Windows启动时单独加载程序并在后台加载所有程序集。

2)尝试减少正在使用的装配数量。当然,你不应该使用Hello World。

3)在Excel启动时预加载所有内容。这将损害Excel启动时间,但会使您的菜单选择更快。您也可以在后台预加载所有内容,以帮助实现此目的。

答案 1 :(得分:0)

您是否验证了实际持有量是多少?如果将Debug.Write()语句作为VSTO插件的第一行,是否需要15秒才能显示在调试窗口中?

我们正在使用VSTO,每当我们持有时,它通常不是实际的运行时导致减速。我们通过分离后台线程来解决这个问题,以便在不阻塞主线程的情况下执行缓慢的操作,从而阻止Excel启动。

PS。我们也不是VSTO技术的忠实粉丝。我们100%购买了这个愿景,但实施工作还有很多不足之处。