我們的C#客戶端應用程序在第一次運行時總是需要更長的時間才能加載。我至今沒有去,以測試是否是任何 .NET應用程序,速度較慢,或者如果第一次運行每個 .NET應用程序是慢,但它仍然是在任何情況下,問題的第一次運行。我們如何消除這一次啓動命中?如何加速我的.NET應用程序的第一次執行的性能?
我最初的想法是某種服務可以「預熱」這些庫。我們是否需要爲我們的每個應用程序或只是任何.NET應用程序執行此操作?服務運行的用戶會有所作爲嗎?也許而不是Windows服務,在Windows登錄上運行的應用程序可以做骯髒的工作?再說一次,它是一個.NET服務就夠了,還是我們必須運行我們的每個程序來消除處罰?我們可以傳入一個命令行參數來告訴程序立即退出,但這樣做是否足夠,或者我們是否需要.NET來加載我們將在正常執行應用程序期間使用的每個程序集?
回覆:一些答案,我們正在部署版本模式的DLL,並放緩僅在第一次啓動。我們儘可能延遲類的初始化。
Paint.NET http://getpaint.net在安裝過程中執行此操作。它運作良好。 – BoltBait 2009-06-26 17:50:30
在下面引用的頁面上,「如果您使用NGEN,則需要注意當本機映像加載到內存時可能發生重新綁定...如果您將多個DLL構建爲應用程序的一部分,則在加載應用程序時重新綁定將最終發生,因爲分配給每個DLL的默認基址始終相同(0x400000)。「 我們包含許多DLL作爲我們的主要應用程序(> 20)。我們仍然會看到一個好處嗎? – 2009-06-26 17:58:15