簡體   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