2016-05-15 34 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以下頁面: