2012-01-11 76 views
0

我正在通過wrox閱讀Professional Asp.net,並注意到了一件事。作者說,在對網站的每個請求之後,如果特定的網站尚未編譯,asp.net引擎正在運行編譯。之後,我們的應用程序中的這個特定網站不會重新編譯每一個下一個請求 - 只是在第一個請求。但是這對我來說確實沒什麼意義,因爲在我們用aspnet_compiler編譯我們的網站之後,輸出中只包含了我們應用中所有頁面的單個dll。所以我的問題是 - 在使用aspnet_compiler預編譯的應用程序與在首次請求應用程序中的特定頁面期間即時編譯的應用程序之間的編譯文件結構中是否存在任何差異。ASP.NET編譯結果

+0

閱讀MSDN文章 - http://msdn.microsoft.com/en-us/library/bb398860.aspx – adatapost 2012-01-11 02:16:46

回答

1

我的理解是,當你在視覺工作室建立你的網站時,產生的DLL來自你的.cs文件(或.vb,取決於你使用的是什麼語言)。任何可能包含服務器端代碼和html(例如.aspx或.ascx)的文件都不會在此時編譯,而是第一次用戶點擊它們而不是任何.cs文件。請參閱here閱讀動態編譯部分。

雖然在項目代碼文件被使用的MSBuild,ASP.NET Web頁面(的.aspx)和用戶控件編譯爲一個單一的組件(的.ascx)Web應用程序項目的被動態編譯服務器上ASP.NET編譯器1

+1

這是正常的配置。但是,他正在談論整個站點何時通過aspnet_compiler.exe編譯到程序集,包括aspx頁面。 – 2012-01-11 04:28:49

+0

@MystereMan良好的通話。 – 2012-01-11 13:22:37

0

你的問題有點含糊。有什麼區別嗎?你指的是什麼樣的差異?結構體?這個結構是什麼意思?

aspnet_compiler在典型配置的運行時會發生什麼,但它在編譯時而不是運行時執行。它生成的代碼基本上與最終運行的代碼相同。

但是,仍然有一個必須發生的彙編。 aspnet_compiler就像cs或vb編譯器一樣,只能編譯成字節碼。字節碼在運行時仍然必須編譯爲本地代碼,除非在安裝時將它編碼。