2008-10-29 43 views
4

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

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

如何提高性能?

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

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

  2. 使用NGEN创建本地程序集。
    a)似乎Office 2003从不使用本地程序集。 b)我的办公室2007测试客户端启动速度快,即使使用IL程序集也是如此。 c)即使我NGEN我的整个依赖性树,仍然有VSTO依赖关系,可能不具有本机图像。

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

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

回答

0

您是否核实过实际的滞留量?如果将Debug.Write()语句作为VSTO插件的第一行,是否需要15秒才能显示在调试窗口中?

我们正在与VSTO合作,无论何时我们拥有Holdups,它通常都是引起放缓的实际运行时间以外的事情。我们已经解决了这个问题,通过分离后台线程来做缓慢的事情,同时不阻塞主线程,这阻碍了Excel的启动。

ps。我们也不是VSTO技术的巨大粉丝。我们已经100%投入到了视野中,但是这种实现并没有得到满足。

+0

是的,这是加载项中“连接”事件的唯一行。 (实际上是messagebox)。在消息框出现前需要15秒。 – 2008-10-30 18:47:17

1

您将在冷启动时受到影响,因为它必须首次加载所有组件。

如果暖启动时有显著快,那么你唯一真正的选择是

1)有一个单独的程序加载当Windows启动,并加载所有的组件你的背景[R插件。

2)尽量减少您使用的程序集数量。当然,你不应该在Hello World中使用太多。

3)当Excel启动时预加载所有内容。这会损害Excel的启动时间,但会使您的菜单选择更快。您也可以在背景中预加载所有内容,以帮助完成此操作。

+0

#1 - 程序集必须在Excel appdomain中加载? #2 - 是 #3 - VSTO不会给你太多的选择...我的牛肉,是在Excel启动时,它只是“似乎挂起”,因为它已经显示的UI,但随后挂起加载组件。坏的微软...糟糕。坏。 :) – 2009-01-05 19:04:06