Web 方案和專案檔的轉換

更新:2007 年 11 月

Visual Studio 2005 會以許多方式變更 Web 專案模型。例如,因為 Web 應用程式資料夾中的所有檔案被視為 Web 專案的一部分,所以不再需要專案檔案了。

新的 Web 專案模型會影響 ASP.NET Web Forms 頁面 (.aspx 檔案)、ASP.NET 使用者控制項 (.asxc 檔案)、Global.asax 檔案和 Web.config 檔案等檔案的轉換。在這些檔案中所做的變更都是根據正在轉換之專案的程式語言而定的。

Visual Studio 2005 會變更程式碼後置 (Code-Behind) 模型以使用部分類別,允許類別跨越多個檔案。在先前的程式碼後置模型中,.aspx 檔案繼承自在相應的程式碼後置檔案 (.aspx.vb 或 .aspx.cs) 中建立之編譯的類別檔案。在新的程式碼後置模型中,.aspx 檔案繼承自編譯的類別,該類別由其相應的 .aspx.vb 或 aspx.cs 檔案,以及自 .aspx 檔案產生且用於為 .aspx 檔案所用之控制項定義欄位宣告的 Stub 檔所組成。這個變更允許將自動產生的程式碼與使用者的程式碼分開。使用者控制項 (.ascx) 的處理方式與使用者控制項的程式碼後置檔案相同。如需程式碼後置模型的詳細資訊,請參閱 ASP.NET Web 網頁程式碼模型

Visual Studio 2005 將編譯模型從產生一個組件 (Assembly) 變更為產生許多組件。每個 ASP.NET Web 網頁和使用者控制項都能編譯至它自己的組件。這個變更可以讓您使用更多的部署案例,例如,您可以根據您的需要,將原始程式碼發行至伺服器,並讓其動態編譯部分 Web 應用程式。

程式碼後置檔案

以下是在轉換至新 ASP.NET 2.0 版程式碼後置模型期間對 ASP.NET Web 網頁和使用者控制項進行的變更。

  • @ Page 指示詞中的 CodeBehind 屬性 (Attribute) 變更為 CodeFile 屬性。

  • 將 Inherits 屬性加入至指向相關編譯類別檔案的 @ Page 指示詞。

  • 所有程式碼後置類別定義已變更為實作 Partial 關鍵字。

  • 將使用者控制項的成員宣告從程式碼後置頁面移除。在編譯模型中,使用者控制項的執行個體會自動從宣告式程式碼中建立。

  • 使用宣告式語法將事件繫結至控制項。例如,透過將 OnClick 屬性加入至宣告式程式碼中的 asp:button 項目,將 Button 控制項的 Click 事件繫結至該控制項。將方法中的委派 (Delegate) 和 Visual Basic Handles 關鍵字移除。沒有為成員移除未在宣告式程式碼中提供的委派,例如動態建立之控制項的委派。

  • 標記為 Friend 或 Internal 之類別檔案中 (但不在頁面類別中) 的成員宣告變更為 Public。

  • 偵錯工具中斷點不會轉換,所以它們不會出現在轉換的檔案中。

    注意事項:

    如果 Web 網頁或使用者控制項在 @ Page 指示詞中沒有 CodeBehind 屬性,就不會被轉換。同樣地,包含 Src 屬性的 Web 網頁或控制項會保留不變。

獨立程式碼檔案

獨立 (Stand-Alone) 程式碼檔案會進行下列變更:

  • 獨立程式碼檔案會移動到 App_Code 目錄。

  • 所有標記為 Friend 或 Internal 的成員宣告都會變更為 Public。這項變更是必要項,因為使用多重組件時,存取層級必須如此,才能看到內含已編譯之獨立程式碼檔的組件以外之組件的成員。

  • Type.GetType 方法的呼叫會變更為使用 BuildManager.GetType 方法。BuildManager.GetType 方法會尋找最上層組件內的型別。

  • 偵錯工具中斷點不會轉換,所以它們不會出現在轉換的檔案中。

設計工具設定

在轉換期間,頁面上有關設計工具的設定會以不同方式進行處理:

  • MS_POSITIONING 屬性 (流程配置或格線配置) 保留在通常的位置上,而 Visual Studio 則將這個設定與個別控制項的絕對位置屬性一起保留。但是,依照預設 Visual Studio 中的新頁面會使用流程配置,不包括 MS_POSITIONING 屬性。

  • 預設用戶端指令碼語言的 <meta> 標記保留不變。

Global.asax 檔案

當 Global.asax 檔案被轉換時,它的程式碼後置檔案會移動到 App_Code 目錄。轉換處理會進行下列變更:

  • @ Application - Global.asax 指示詞中移除 CodeBehind 和 Inherits 屬性。

  • 如果尚未指定 Language 屬性,則將它加入至 @ Page 指示詞中。

  • 對於 Visual Basic,會將 Namespace 陳述式加入至類別檔案中。命名空間由 Web 專案中的根命名空間 (Namespace) 定義。

Web.config 檔案

在 Visual Studio 2005 中,Web.config 檔案所支援的項目比在 Visual Studio .NET 中支援的更多。例如,仍套用至 Visual Studio 的專案設定通常會轉換至 Web.config 檔案。如需詳細資訊,請參閱 Web 專案設定轉換

請參閱

概念

Web 應用程式專案概觀

從 Visual Studio .NET 轉換 Web 專案

Web 專案設定轉換

其他資源

Global.asax 語法

ASP.NET 組態設定

ASP.NET 組態檔

Global.asax 語法