2010-05-27 194 views
3

我有Office 2007 VSTO加載項,它使用功能區XML等等。在重新啓動後首次啓動Office時,需要比第二次啓動時間更長的時間。該加載項在安裝期間被註冊爲vstolocal並且使用VSTO包含列表進行信任。據我所知,這可以避免將其安裝到ClickOnce並驗證發佈者。Office 2007加載項首次加載需要很長時間

那麼,首次啓動時間長的可能原因是什麼?你能給我一些想法嗎?

+0

什麼是您的外接做連接/在啓動時?你可以分析你的代碼,看看你的加載項,Office或VSTO加載器是否消耗了時間嗎?這可能只是您的硬件運行速度太慢而無法運行VSTO。 – 2010-05-27 10:28:22

+0

我如何分析它?我有紅門螞蟻,但它只能啓動和配置.exe,所以我可以選擇Word,然後沒有任何細節可以查看。 – Kurtevich 2010-05-27 13:08:48

+0

我發現如何分析它,它看起來像外接的方式採取了裝載時間一點點微不足道的一部分,所以它必須有無關加載項的代碼,也許與事實有一個加載項被加載。 順便說我嘗試了一些註冊表設置,如預熱(不知道這是否改變任何東西),LoadBehavior的= 9(美麗的,但我不知道如何「按需」加載此類加載)等 不管怎麼說,目前關於這個問題的工作暫停。謝謝你的評論,0xA3,現在找到一些想法仍然很有趣,儘管現在不重要。 – Kurtevich 2010-05-27 15:02:18

回答

3

我們有Word和VSTO插件,第一次啓動需要20-30秒,第二次啓動需要6-7秒。這是Word 2007,.NET 3.5和Windows XP。沒有插件的Word花了大約5秒的時間開始冷啓動,2-3熱啓動。在我們的冷啓動測試中,Word是第一個在啓動後啓動的應用程序,並且是第一次使用任何.NET代碼。

和我們一樣,我們發現代碼在加載項中的執行時間對加載時間沒有明顯的影響。使用VSTO意味着必須加載和初始化.NET Framework和VSTO運行時。速度的下降全部歸結於磁盤加載和.NET/VSTO初始化的開銷。

當然,提出的第一個「解決方案」是在登錄時不可見地啓動Word,然後殺死Word進程以預熱磁盤緩存。當然,這只是讓機器在啓動時多出了45個奇怪的秒數(我猜是因爲它增加了磁盤爭用)。但是,哇,Word之後很快就開始了(只要登錄後不久就開始)。幸運的是,我們沒有對我們的用戶造成這種解決方案。我們還編寫了一個簡單的.NET應用程序,它將簡單地啓動,加載一些與我們的Word加載項相同的依賴項並退出。它也將在登錄期間安排。它確實需要幾秒鐘的時間才能啓動Word,並在日誌中添加更多秒鐘,但是當一些用戶甚至可能不會在他們的Word中使用Word時進行折衷似乎毫無意義會話。如果他們確實想要使用Word,並且一旦桌面變得響應,他們就會啓動Word,那麼Word將最終與自定義應用程序競爭資源,這本來是爲了平滑它的道路!

我們的情況很複雜,因爲我們也有Word模板(VBA)加載項。它們也佔據了啓動時間的很大一部分,因爲它是需要初始化的第二個運行時,並且需要從磁盤的一些分散區域加載更多文件。從Word到Word只有VSTO插件或Word只有VBA插件,Word與VBA和VSTO插件一起使冷啓動時間非線性增加。也就是說,添加更多的依賴關係會將更多的加載時間添加到總體上,然後單獨依賴關係的加載時間本身。

我們也嘗試了COM shim wizard。使用COM Shim消除了VSTO運行時,但仍允許您在加載項中安全地使用.NET。將我們的VSTO代碼轉換爲與生成的COM Shim一起工作並不太困難。這大大提高了加載時間(我沒有這些數字,我認爲它將冷啓動時間減半了,但那是在VBA加載項中)。我們理想的解決方案是使用COM Shim加載.NET加載項,並將所有VBA代碼遷移到.NET。當這個解決方案突然出現的時候,冷啓動時間並不是這個問題的嚴重問題,並且優先級下降了!

+0

如果您打算嘗試通過改進硬件來提高性能,那麼您應該專注於提高IO性能,例如使用SSD。 – Ishmael 2010-06-17 22:17:01

0

我也在使用.NET v4.0的Outlook,Visual Studio 2010和加載項中遇到這個問題。我發現這個網頁:http://blogs.msdn.com/b/vsod/archive/2012/05/19/resolving-performance-issues-with-loading-office-add-ins-vsto-add-ins-or-shared-add-ins.aspx

只是我的觀察:一個空的(VSTO)加載項也需要長達5秒的加載。

所以它可能是加載.NET庫的問題。

(至少在這之後,我發現這個職位,我知道這個問題是真實的。)

編輯:重啓後,問題可能涉及到.NET冷啓動。但是奇怪的是,Windows系統控制中的加載項的安裝日期 - 程序和函數是當前日期。所以它看起來像加載項每天都新安裝?!?

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2014-11-24 10:36:05

相關問題