2008-10-29 64 views
4

如果您創建一個針對Microsoft Office Excel 2003的簡單「Hello World」VSTO2SE加載項,則需要15秒才能加載冷啓動。在此期間,Excel完全沒有響應。如何提高VSTO2SE MS Office加載項的冷啓動性能?

在Excel 2003中,冷啓動時間總是很慢。我看到一臺測試機器,啓動時間在Excel 2007中即時啓動,但我所有其他測試機器需要15秒才能初始化。 (測試環境 - Windows XP專業版+ VSTO2SE運行時+ XP SP3)

如何提高性能?

事情我已經沒有成功的嘗試:

  1. Disasble CRL(證書吊銷列表)檢查 - 這似乎並沒有幫助,加上我不能指望用戶這樣做。

  2. 使用NGEN創建本地程序集。
    a)似乎Office 2003從不使用本地程序集。 b)我的辦公室2007測試客戶端啓動速度快,即使使用IL程序集也是如此。 c)即使我NGEN我的整個依賴性樹,仍然有VSTO依賴關係,可能不具有本機圖像。

  3. 延遲加載加載項 - 這是我從Microsoft獲得的解決方法「股票響應」。問題是,我的加載項是從菜單項啓動的 - 我如何延遲加載加載項並仍然獲得我的菜單?我可以使用VB6加載項來繪製菜單並通過interop轉發調用,但是爲什麼我甚至會首先編寫VSTO加載項?

編輯 - 是的,這是加載項中「連接」事件的唯一行。 (實際上是messagebox)。在消息框出現前需要15秒。 - J Davis

回答

0

您是否覈實過實際的滯留量?如果將Debug.Write()語句作爲VSTO插件的第一行,是否需要15秒才能顯示在調試窗口中?

我們正在與VSTO合作,無論何時我們擁有Holdups,它通常都是引起放緩的實際運行時間以外的事情。我們已經解決了這個問題,通過分離後臺線程來做緩慢的事情,同時不阻塞主線程,這阻礙了Excel的啓動。

ps。我們也不是VSTO技術的巨大粉絲。我們已經100%投入到了視野中,但是這種實現並沒有得到滿足。

+0

是的,這是加載項中「連接」事件的唯一行。 (實際上是messagebox)。在消息框出現前需要15秒。 – 2008-10-30 18:47:17

1

您將在冷啓動時受到影響,因爲它必須首次加載所有組件。

如果暖啓動時有顯著快,那麼你唯一真正的選擇是

1)有一個單獨的程序加載當Windows啓動,並加載所有的組件你的背景[R插件。

2)儘量減少您使用的程序集數量。當然,你不應該在Hello World中使用太多。

3)當Excel啓動時預加載所有內容。這會損害Excel的啓動時間,但會使您的菜單選擇更快。您也可以在背景中預加載所有內容,以幫助完成此操作。

+0

#1 - 程序集必須在Excel appdomain中加載? #2 - 是 #3 - VSTO不會給你太多的選擇...我的牛肉,是在Excel啓動時,它只是「似乎掛起」,因爲它已經顯示的UI,但隨後掛起加載組件。壞的微軟...糟糕。壞。 :) – 2009-01-05 19:04:06