【问题标题】:Outlook disables VSTO addin, complains of load timeOutlook 禁用 VSTO 插件,抱怨加载时间
【发布时间】:2016-05-15 10:19:56
【问题描述】:

我开发的插件有一个非常奇怪的问题。

客户抱怨加载项由于加载时间缓慢而被 Outlook 禁用,但在我的代码中(平均 1.2 秒),除了 AddIn Express 生成的代码之外,我没有运行任何其他自定义代码见下文。

 private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            logger.Debug("Startup called");
            this.AddInStartup();
            #region Add-in Express Regions generated code - do not modify

            this.FormsManager = AddinExpress.OL.ADXOlFormsManager.CurrentInstance;
            this.FormsManager.OnInitialize += new AddinExpress.OL.ADXOlFormsManager.OnComponentInitialize_EventHandler(this.FormsManager_OnInitialize);
            this.FormsManager.Initialize(this);
            #endregion
            logger.Debug("Exit Startup");
        }

另外,我有一个功能区功能区(按钮),可以加载。

插件的所有功能代码,例如登录、Web 服务调用仅在单击功能区按钮打开 Outlook 时执行。

是否有任何潜在的问题我可能已经过去或可能与我的代码无关的外部原因,当所有发生的只是在 Outlook 启动期间加载的功能区时,Outlook 会抱怨我的插件启动缓慢?

【问题讨论】:

    标签: c# outlook outlook-addin addin-express


    【解决方案1】:

    加载项启动缓慢的原因有多种......

    但首先要删除所有 Add-in Express 代码并查看加载所需的时间。对于没有 Add-in Express 程序集的新创建的外接程序项目,您是否会得到相同的结果?

    我建议采用通用方法来提高整体插件性能,例如:

    1. 考虑在您的应用程序上使用本机图像生成器 (Ngen.exe)。使用 Ngen.exe 意味着用 CPU 消耗换取更多磁盘访问,因为 Ngen.exe 生成的本机映像可能比 MSIL 映像大。 为了缩短热启动时间,您应该始终在您的应用程序上使用 Ngen.exe,因为这样可以避免 JIT 编译应用程序代码的 CPU 成本。
    2. 如果程序集未安装在全局程序集缓存 (GAC) 中,如果计算机上有该程序集的本机映像,则强名称程序集的哈希验证和 Ngen 映像验证会导致延迟。 GAC 中安装的所有程序集都会跳过强名称验证。有关详细信息,请参阅 Gacutil.exe(全局程序集缓存工具)。
    3. 验证码验证增加了启动时间。 Authenticode 签名的程序集必须通过证书颁发机构 (CA) 进行验证。此验证可能很耗时,因为它可能需要多次连接到网络才能下载当前的证书吊销列表。它还确保在通往受信任根的路径上有完整的有效证书链。在加载程序集时,这可能会导致几秒钟的延迟。考虑在客户端计算机上安装 CA 证书,或尽可能避免使用 Authenticode。如果您知道您的申请不需要发布者证据,则无需支付签名验证费用。

    请参阅Application Startup Time 了解更多信息。另请查看以下页面:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2010-11-22
      • 2023-03-17
      • 2016-02-09
      • 2021-06-03
      相关资源
      最近更新 更多