2016-05-15 111 views
0

我开发的AddIn存在一个非常奇怪的问题。Outlook禁用VSTO插件,抱怨加载时间

客户抱怨由于加载时间缓慢而导致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"); 
     } 

此外,我有一个功能区功能区(按钮),得到加载。

addIn的所有功能代码(如登录,web服务调用)仅在点击Ribbon按钮打开Outlook时执行。

是否有任何潜在的问题,我可能看过去或可能的外部原因与我的代码无关,哪里的Outlook会抱怨我的addIn启动缓慢,当发生的只是在展望开始时间加载的功能区?

回答

1

为什么有您的外接开始慢慢多发的原因....

但最先下手的是要消除任何外接快速代码,看看需要多少时间来加载。您是否在不使用附加组件的情况下获得与新创建的附加项目相同的图片?

我建议提高整体加载性能,如采用常用的方法:

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

查看Application Startup Time了解更多信息。也看看TJE以下页面: