Outlook禁用VSTO插件,抱怨加载时间

时间:2016-05-15 10:19:56

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

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

客户抱怨由于加载时间缓慢而导致AddIn被禁用但在我的代码中(在avrg上为1.2s),除了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");
        }

另外,我有一个功能区Ribbon(Button),它会被加载。

addIn的所有功能代码,例如登录,webservice调用,仅在单击功能区按钮打开outlook时执行。

我可能已经看过任何潜在的问题,或者可能的外部原因与我的代码无关,其中outlook会抱怨我的addIn启动缓慢,当所有发生的只是在Outlook开始时加载的功能区?

1 个答案:

答案 0 :(得分: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)验证Authenticode签名的程序集。此验证可能非常耗时,因为它可能需要多次连接到网络才能下载当前的证书吊销列表。它还确保在到受信任根的路径上有完整的有效证书链。加载程序集时,这可能会转换为几秒钟的延迟。请考虑在客户端计算机上安装CA证书,或者尽可能避免使用Authenticode。如果您知道您的申请不需要发布者证据,则无需支付签名验证费用。
  4. 有关详细信息,请参阅Application Startup Time。另请参阅以下页面: