繁体   English   中英

Outlook禁用VSTO加载项,抱怨加载时间

[英]Outlook disables VSTO addin, complains of load time

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

客户抱怨AddIn由于加载速度慢而被Outlook禁用,但是在我的代码(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(按钮),该功能区已加载。

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

我可能已经看过任何潜在的问题,或者可能是与代码无关的外部原因,当仅在Outlook启动时加载功能区时,Outlook会抱怨我的addIn启动缓慢?

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

但是首先要开始的是删除所有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验证会增加启动时间。 Authenticode签名的程序集必须通过证书颁发机构(CA)进行验证。 此验证可能很耗时,因为它可能需要多次连接到网络才能下载当前的证书吊销列表。 它还可以确保在通往受信任根目录的路径上有完整的有效证书链。 加载装配件时,这可能会延迟几秒钟。 考虑在客户端计算机上安装CA证书,或者尽可能避免使用Authenticode。 如果您知道自己的应用程序不需要发布者的证据,则不必支付签名验证的费用。

有关更多信息,请参见应用程序启动时间 还请看以下几页:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM