hit counter for blogger

黑暗執行緒

 黑暗執行緒搬新家囉!! http://www.darkthread.net

11/16/2006

KB-用VS 2005 Build Web Site,總是慢到讓你想哭嗎?

這大概是所有由VS.NET 2003轉到VS 2005的ASP.NET Developer最重要的感想之一吧! 跟VS.NET 2003時代的ASP.NET Web Application Project相比,VS 2005的Web Site Project Build起來真像老牛拉車,只見CPU猛飆,HD狂轉,以前3-5秒搞定的事,現在沒有個10秒20秒東西出不來,對我這種且戰且走型的Programmer來說,真是痛苦的折磨。

前些日子,看到Scott Guthrie一篇文章,讓我眼睛一亮,直到剛才有機會試了一下。親愛的史考特,這真是太神奇了! 一個Refrence了四個dll的專案,Build時間足足縮短為1/3(12秒->4秒),大家看完以下的說明,快點試試吧!

Scott的文章裡提到了一件事,當你的ASP.NET專案參考DLL時,若DLL是來自於檔案(也就是用瀏覽功能去挑DLL檔案),VS 2005會很"貼心地"自動補上一個yourAssemblyDllName.dll.refresh的檔案,裡面只有一行文字,指向原始參考的檔案路徑,其用意是每次Build Web Project時,雖然BIN下已經有了該DLL檔,VS 2005還是會去原始來源檢查該檔案有沒有更新。若有,會將較新版的DLL檔以及其相依的DLL一併Copy回BIN下面。這樣子,被參考DLL只要一有更新,不勞你動手,VS 2005就會自動抓最新版的回來用。雖然Scott強調的是Dueling Assembly Reference Problem(導因於共用被參考檔的版本衝突),未必會發生在每個Project中,但那個.refresh的特性,倒讓我想試看看單純.refresh造成的效能衝擊。我找了一個專案,特意以選取檔案的方式參考了幾個DLL檔案,果不其然,.refresh出現了:

AspNetDllRefresh

開啟專案後第一次Build Web Site耗時12秒,第二次約8秒。接著我將四個.refresh移除,咻~~~ 首次Build大約只花了4秒,之後更是不到2秒,效果驚人!! (剛才在另一台機器不同專案做的實測是25"->10",快了一倍以上!)

被VS 2005的慢郎中性格氣到吐血的朋友們,不妨試試,再留言分享一下實測的改善效果吧!

2 Comments:

  • 還是不知道dll怎麼加進來

    By Anonymous Anonymous, at 12/15/2006 4:17 pm  

  • 你是指在Web Site Project中要參考DLL嗎?
    有三個地方可以加,在BIN目錄上按右鍵,在Project的那一列按右鍵,選單中有Add Reference選項;Project Property Page也可以Add Reference或Add Web Reference.

    By Blogger Darkthread, at 12/15/2006 4:41 pm  

Post a Comment

<< Home