共用方式為


編譯 Web 應用程式專案

更新:2007 年 11 月

Web 應用程式專案類型會針對 Microsoft Visual Studio 2005 所引進的網站專案類型提供替代方案。Web 應用程式專案模型是以 Visual Studio .NET 2003 Web 專案模型為架構所建立,用以簡化從 Visual Studio .NET 2003 Web 專案轉換為新版 Visual Studio 的作業,並降低程式碼變更的需要。專案中的程式碼檔可藉由使用 Microsoft Build Engine (MSBuild) 而先行編譯成單一組件。ASP.NET Web 網頁 (.aspx) 和使用者控制項 (.ascx) 則會由 ASP.NET 編譯器 (Compiler) 在伺服器上進行動態的編譯。

編譯模型

Web 應用程式專案的編譯模型與 Visual Studio .NET 2003 編譯模型很類似。專案中的所有程式碼檔 (獨立 (Stand-Alone)、程式碼後置 (Code-Behind) 和設計工具類別檔) 都會先行編譯成單一組件,依預設這種組件會建置及保存在 Bin 資料夾中。因為這個編譯模型會建立單一組件,所以您可以指定屬性,例如組件名稱和版本,並同時指定輸出組件的位置。

Web 應用程式專案是由專案檔所定義,而不是專案資料夾,後者是用來定義網站專案。專案檔包含專案中所含的檔案,以及組件參考和其他專案中繼資料設定。包含在專案資料夾中但並未在專案檔中定義的檔案,不會編譯為 Web 應用程式專案的一部分。針對每個專案所產生的專案檔 (.*proj),會參考透過 Visual Studio 加入和變更的專案設定。

若要執行和偵錯網頁,必須編譯完整的 Web 應用程式專案。建置完整的 Web 應用程式專案可能只需很短的時間,因為 Visual Studio 使用的是累加建置 (Incremental Build) 模型,只會建置變更的檔案。

如需詳細資訊,請參閱 Web 應用程式專案概觀

先行編譯類別檔

Web 應用程式專案會使用 MSBuild 先行編譯類別檔。這些類別檔會編譯成單一組件,並依預設放在 Bin 資料夾中。您可以使用標準的 MSBuild 擴充性規則來擴充及自訂編譯處理序。如需詳細資訊,請參閱 MSBuild 概觀

下表描述編譯成單一組件的 Web 應用程式專案類別檔的類型。

類別檔類型

描述

Standalone

可以建立並加入 Bin 資料夾的類別檔。

Code-behind

直接與內容檔相關的使用者定義程式碼。

Designer

自動產生的程式碼。您不應該修改 .designer 檔案。

自訂編譯選項

您可以使用 [專案設計工具] 視窗裡的 [應用程式] 屬性頁項目,指定輸出組件的名稱、版本以及其他詳細資料。請使用 [專案設計工具] 視窗裡的 [建置] 頁面,指定專案的建置組態。例如,您可以指定錯誤的處理方式,並指定與組件輸出相關的詳細資料。此外,您也可以設定 [建置事件] 屬性頁的值,藉此加入編譯期間的建置前和建置後步驟。如需屬性頁的詳細資訊,請參閱專案、使用者介面項目

設定建置動作屬性

根據預設,MSBuild 只會在 [建置動作] 屬性設定為 [編譯] 時,才編譯 Web 應用程式專案的類別檔。不過,如果類別檔是位在 Web 應用程式專案的 App_Code 資料夾中,則這些類別檔也會由 ASP.NET 編譯器 (Compiler) 進行編譯,即使其建置動作並未明確設為 [編譯],仍會執行此動作。

注意事項:

Visual Studio 2005 中的網站專案會有 App_Code 資料夾,這個資料夾一般並不會包含在 Web 應用程式專案中。_ 如需 App_Code 資料夾的詳細資訊,請參閱 ASP.NET 網站中的共用程式碼資料夾

動態編譯

雖然專案中的程式碼檔會使用 MSBuild 先行編譯為單一組件,但是 Web 應用程式專案的 ASP.NET Web 網頁 (.aspx) 和使用者控制項 (.ascx) 都會在伺服器上由 ASP.NET 編譯器進行動態編譯。在 Web 應用程式專案中,Web 網頁和使用者控制項會在其 @ Page 或 @ Control 指示詞中使用 CodeBehind 屬性和 Inherits 屬性。CodeBehind 屬性參考要使用的程式碼後置檔案;_ Inherits 屬性則指向程式碼後置檔案中的命名空間 (Namespace) 和類別。

在 Web 應用程式專案中,可以在編譯及部署 ASP.NET Web 網頁之後,在網站中對這些網頁進行有限的變更。例如,您可以變更控制項、顏色、字形及其他頁面外觀的安排。也可以加入控制項,只要它們不需要事件處理常式或其他程式碼。網站第一次執行時,ASP.NET 會執行進一步的編譯,以便從標記中建立輸出。

如果您想要在 Web 應用程式專案中自訂控制項的宣告,應該在程式碼中以動態方式 (而不是在 .aspx 檔案中以宣告方式) 建立控制項。在下列情況中,將控制項的宣告移到程式碼後置檔案很有用:

  • 當控制項必須重新輸入時。

  • 當想要控制項具有預設範圍以外的範圍時。

  • 當您想要將中繼資料屬性加入控制項的宣告時。

  • 當您想要針對控制項的宣告撰寫 XML 程式碼註解時。

如需如何加入控制項的詳細資訊,請參閱 HOW TO:以程式設計方式加入控制項至 ASP.NET Web 網頁

部署

因為所有的類別檔都會編譯成單一組件,所以只有該組件必須與 .aspx 和 .ascx 檔案以及其他靜態內容檔案一起部署。在這個模型中,.aspx 檔案只有瀏覽器要求時才會進行編譯。

但是,您也可以編譯 .aspx 檔案,並將其加入單一組件中以便部署。您可以使用「Web 部署專案」(這是 Visual Studio 的可下載增益集 (Add-In)) 來執行此作業。若要下載這個增益集,請參閱 ASP.NET Developer Center 網站上的 Visual Studio 2005 Web 部署專案 (英文)。如需如何部署 Web 應用程式專案的詳細資訊,請參閱 HOW TO:發行 Web 應用程式專案

請參閱

概念

MSBuild 概觀

ASP.NET 網站中的共用程式碼資料夾

參考

專案設計工具、建置事件 (C#)

專案設計工具、建置頁 (C#)

@ Page

其他資源

MSBuild 概念

Web Application Projects

ASP.NET Web 網頁模型的新功能