【问题标题】:How can I improve cold startup performance for a VSTO2SE MS Office add-in?如何提高 VSTO2SE MS Office 加载项的冷启动性能?
【发布时间】:2010-09-19 21:23:06
【问题描述】:

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

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

如何提高这种性能?

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

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

  2. 使用 NGEN 创建本机程序集。
    a) 似乎 Office 2003 从不使用本机程序集。 b) 我的 office 2007 测试客户端启动速度很快,即使使用 IL 程序集也是如此。 c) 即使我对我的整个依赖关系树进行了 NGEN,仍然存在可能没有本机映像的 VSTO 依赖项。

  3. 延迟加载加载项 - 这是我从 Microsoft 获得的解决方法“库存响应”。问题是,我的加载项是从菜单项启动的 - 我怎样才能延迟加载加载项并仍然获得我的菜单?我可以使用 VB6 插件来绘制菜单并通过互操作转发调用,但我为什么还要编写 VSTO 插件呢?

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

【问题讨论】:

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


    【解决方案1】:

    您将在冷启动时受到打击,因为它必须第一次加载所有程序集。

    如果热启动明显更快,那么您唯一真正的选择是

    1) 在 Windows 启动时加载单独的程序,并在后台为您的插件加载所有程序集。

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

    3) 在 Excel 启动时预加载所有内容。这会影响 Excel 的启动时间,但会使您的菜单选择更快。您还可以在后台预加载所有内容,以提供帮助。

    【讨论】:

    • #1 - 程序集必须加载到 Excel appdomain 中? #2 - 是的 #3 - VSTO 没有给你太多选择......我的牛肉是,当 excel 启动时,它只是“似乎挂起”,因为它已经显示了 UI,但随后挂起加载程序集。糟糕的微软……糟糕。坏的。 :)
    【解决方案2】:

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

    我们正在与 VSTO 合作,每当我们遇到问题时,通常不是实际运行时导致减速的原因。我们已经解决了这个问题,方法是关闭后台线程以执行缓慢的操作,同时不阻塞阻止 Excel 启动的主线程。

    ps。我们也不是 VSTO 技术的忠实拥护者。我们 100% 接受了这一愿景,但实施仍有很多不足之处。

    【讨论】:

    • 是的,这是加载项中“连接”事件的唯一行。 (实际上是消息框).. 消息框出现之前需要整整 15 秒。
    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    相关资源
    最近更新 更多