2010-08-19 135 views
1

下面是我理解asp.net編譯的方法。請糾正我理解中的任何錯誤。瞭解網站項目的ASP.NET編譯

如果我不發佈網站項目,而只是簡單地將所有文件複製到web目錄我知道第一次訪問它編譯,所以第一次訪問它有點慢。從那時起(如果我不更新源代碼)網站保持編譯正確(E.G.不在緩存中過期)?

如果我更新頁面的源代碼,ASP.NET以某種方式檢測到更改並重新編譯?它是否只重新編譯一個頁面或將所有內容放在bin \ MySiteName.dll中?

最後,如果我發佈一個網站,我無法更新源代碼(aspx是,但不是頁面後面的代碼)。這預編譯站點,以便第一次加載很快。該網站永遠編譯,直到新的發佈。

回答

1

基本上,我認爲你是對的。我會告訴你的一件事是,可以預編譯一個ASP.NET應用程序,以便第一次加載不會太慢。基本上,你使用aspnet_compiler.exe來完成這個任務。有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/bb398860.aspx以獲取更多信息。

2

您是對的,每當您對源代碼文件應用更改時,Web站點項目的程序集緩存都會失效。正如MSDN指出:

任何更改到動態編譯 文件將自動失效 文件的緩存編譯的程序集和所有受影響的 資源 觸發重新編譯。下次向 發出代碼請求時,ASP.NET會識別代碼已更改的 ,並且 會重新編譯Web應用程序的受影響資源 。

據我所知,沒有過期日期附加到您的程序集,除非它被刪除(程序集存儲在%WINDIR%\ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP中。 NET Files \ name_or_web_site)。

有趣,注意:帶自動編譯,離開調試=假你的web.config文件中,一旦你把你的網站項目生產是非常重要的。如果您忘記了它,批處理編譯將被關閉,並且將爲每個請求的源頁面生成一個程序集!你可以在If broken it is, fix it you should的博客上閱讀更多關於它的信息。