在 Visual Studio 中將網站項目轉換為 Web 應用程式項目

來源:互聯網
上載者:User
本文介紹如何將現有的 Microsoft Visual Studio 2005 網站項目轉換為 Microsoft Visual Studio 2005 Web 應用程式項目。Web 應用程式項目模型使用的概念方法與 Visual Studio .NET 2003 中的 Web 項目相同。該概念方法包括一個專案檔,用於將檔案和編譯包含到單個程式集中,或將它們排除在外。

要完成轉換操作要進行以下步驟:

  • 開啟並驗證 Visual Studio 2005 網站項目。

  • 建立新的 Visual Studio 2008 Web 應用程式項目。

  • 設定項目引用。

  • 將檔案複製到新的 Web 應用程式項目。

  • 轉換專案檔。

  • 運行 Web 應用程式項目。

  • 添加命名空間文法。

  • 轉換聲明性強型別資料集。

  • 轉換設定檔對象代碼。

若要完成轉換,您需要:

  • Visual Studio 2008 或 Microsoft Visual Studio 2005 Service Pack 1 (SP1)

  • .NET Framework 2.0 版。

    轉換項目之前,應驗證項目是否可以正確運行。這有助於防止在轉換期間發生錯誤。

    開啟並驗證 Visual Studio 2005 Web 項目
    1. 開啟現有的 Visual Studio 2005 解決方案。

    2. 在[檔案] 功能表中單擊“開啟”,再單擊“網站”。

      將顯示“開啟網站”對話方塊。

    3. 選擇要開啟的專案檔夾,然後單擊“開啟”。

    4. 在“產生”菜單上單擊“產生網站”。

    5. 在“調試”菜單中單擊“啟動調試”。也可以按 F5。

    6.  驗證項目是否按預期運行。

 建立新的 Visual Studio 2008 Web 應用程式項目

轉換現有 Visual Studio 2005 網站項目的最佳策略是先在單獨的目錄中建立一個新的空白 Visual Studio 2008 Web 應用程式項目。這樣可避免現有網站檔案的任何部分發生更改。它還有利於將現有功能複製到新的 Web 應用程式項目中。

您可以將新項目添加到現有解決方案中,當存在多個要使用的類庫項目時,這將是理想的方案。另外,也可以啟動 Visual Studio 的新執行個體並建立新的解決方案和項目。

在新解決方案中建立新的 Visual Studio 2008 Web 應用程式項目
  1. 在 Visual Studio 2008 中,關閉所有開啟的解決方案。

  2. 在[檔案] 功能表中單擊“建立”,再單擊“項目”。

    將顯示“建立項目”對話方塊。

  3. 在“建立項目”對話方塊的“項目類型”部分中,展開要使用的語言,然後選擇“Web”以顯示與 Web 相關的模板。

  4. 選擇“ASP.NET Web 應用程式”。

  5. 鍵入“名稱”、“位置”和“解決方案名稱”的值,然後單擊“確定”以建立 Web 應用程式項目。

  6. 建立項目後,請刪除自動建立的 Default.aspx 和 Web.config 檔案。

將網站項目複製到 Web 應用程式項目中
  1. 在“方案總管”中,右擊網站項目,然後選擇“在 Windows 資源管理員中開啟檔案夾”。

  2. 選擇要複製網站項目的檔案。

  3. 右擊選定的檔案,然後選擇“複製”。

  4. 在 Web 應用程式項目中,右擊該 Web 應用程式項目,然後選擇“在 Windows 資源管理員中開啟檔案夾”。

  5. 將網站專案檔粘貼到 Web 應用程式目錄中。

  6. 在 Web 應用程式項目的“方案總管”中,單擊“顯示所有檔案”按鈕。

  7. 在“方案總管”中選擇新的檔案。

  8. 右擊選定的檔案,然後單擊“包括在項目中”。

Visual Studio 2008 網站項目與 Visual Studio 2008 Web 應用程式項目的一個區別是,網站項目模型會動態產生由工具產生的部分類別。

將檔案從網站項目複製到 Web 應用程式項目之後,您會發現每個頁和使用者控制項的程式碼後置檔案仍與 .aspx、.master 和 .ascx 檔案關聯。此過程並未產生 .designer.cs 或 .designer.vb 檔案。在下一步中,您要轉換這些頁,以便將其部分類別儲存在 .designer.cs 或 .designer.vb 檔案中。

轉換專案檔

Visual Studio 包括一個用於轉換 Web 應用程式項目中的頁和類以使用其部分類別的選項。部分類別用於分隔頁或使用者控制項程式碼後置代碼中的標記。這些由設計器產生的類都儲存在程式碼後置檔案之外的一個單獨的檔案中。

在轉換過程中,Visual Studio 2008 將以遞迴方式檢查項目中的每個頁、主版頁面和使用者控制項,並自動為它們中的每一項產生一個 .designer.cs 檔案。此外,Visual Studio 還會更改 .aspx 或 .ascx 檔案,以使用 codeBehind 屬性代替 codeFile 屬性。此命令還會將 App_Code 檔案夾重新命名為 Old_App_Code。

將頁和類轉換為使用 Web 應用程式項目中的部分類別
  1. 在“方案總管”中,右擊包含要轉換的頁和類的項目根資料夾,然後單擊“轉換為 Web 應用程式”。

  2. 產生項目,以查看是否存在任何編譯錯誤。

如果您看到錯誤,則可以檢查兩個最常見的原因,如下所述:

  • 缺少必須添加到項目中的程式集引用。

  • 動態產生的類型(例如 Profile 對象或類型化資料集)存在問題。

如果缺少程式集引用,請開啟引用管理器並進行添加。如果使用的是動態產生的類型,請參見本主題後面的“轉換聲明性強型別資料集” 和“轉換設定檔對象代碼”。

由於 ASP.NET 2.0 會動態編譯 App_Code 檔案夾中的所有類,因此不應將編譯為 Visual Studio 2008 Web 應用程式的一部分的類儲存在該檔案夾中。否則,該類將被編譯兩次。第一次將作為 Visual Studio 2008 Web 應用程式項目程式集的一部分編譯,第二次則是由 ASP.NET 在運行時編譯。這可能導致“未能載入類型”異常。之所以出現此異常,是因為應用程式中存在重複的類型名稱。

正確的方法應是將類檔案儲存體在 App_Code 檔案夾之外的專案檔夾中。此操作是通過“轉換為 Web 應用程式”命令自動完成的,此命令可將該檔案夾重新命名為 Old_App_Code。

運行 Web 應用程式項目

現在可以編譯並運行應用程式。預設情況下,Visual Studio 2008 將使用內建的 ASP.NET Development Server 運行網站。您也可以將項目配置為使用 Internet 資訊服務 (IIS)。若要管理 Web 應用程式項目設定,請右擊該項目,再單擊“屬性”。隨後,可以選擇“Web”選項卡來配置這些運行時設定。

其他轉換選項

將項目轉換為 Web 應用程式項目時,還需要考慮其他一些轉換選項。這些選項如下:

  • 添加命名空間文法。

  • 轉換聲明性強型別資料集。

  • 轉換設定檔對象代碼。

添加命名空間文法

預設情況下,使用 Visual Studio 2008 網站項目模型產生的頁和類不會自動包含代碼命名空間。但是,使用 Visual Studio 2008 Web 應用程式項目模型產生的頁、控制項和類會自動包含代碼命名空間。將網站項目轉換為 Web 應用程式項目時,必須向代碼添加命名空間。

例如,當您使用 C# 時,可通過 C# 代碼編輯器中的“外側代碼”捷徑功能表命令向 Visual Studio 中的現有類添加命名空間。

向現有類添加命名空間
  1. 開啟要修改的代碼檔案。

  2. 在源編輯器中選擇一個類(或多個類),右擊所選的代碼,然後單擊“外側代碼”。

  3. 在列表中選擇“命名空間”項。

副檔名為 .aspx、.ascx、.master、.ashx、.asmx 和 .asax 的檔案包含帶有 Inherits 或 Class 屬性的指令(例如 @ Page 指令),當這些檔案是程式碼後置頁時,上述屬性將列出它們調用的類名。如果向屬於這些檔案類型的程式碼後置檔案中添加了命名空間,則還必須將該命名空間添加到 Inherits 和 Class 聲明中。例如,如果向名為 Details.aspx 的程式碼後置檔案中添加 WebApplication5 命名空間,則還需要將 @ Page 指令的 Inherits 屬性從 inherits=Details_aspx 更改為 inherits=WebApplication5.Details_aspx。

轉換聲明性強型別資料集

如果 Visual Studio 2008 網站項目的 App_Code 檔案夾中包含強型別資料集類,則還必須執行另一項更改才能修複 Web.config 檔案中的 connectionString 元素。此外,還必須為資料集類中的每個 TableAdapter 對象設定 connectionString 元素。

修複強型別資料集的 connectionString
  1. 在“方案總管”的 App_Code 檔案夾中,右擊該資料集類,然後單擊“視圖設計器”。

    將顯示該資料集的“設計器”視窗。

  2. 右擊 TableAdapter 對象,然後單擊“屬性”。

  3. 選擇“Connection”屬性,然後通過選擇一個可用選項來重設該串連。

    更新串連時,連接字串也將隨之更新。

  4. 對於每個資料集中的每個 TableAdapter 對象,請重複上述步驟。

 

轉換設定檔對象代碼

ASP.NET 2.0 增加了對設定檔屬性的支援。利用此功能,可以在個人化資料庫中儲存和檢索使用者設定檔資料。在 Visual Studio 2008 網站項目中,ASP.NET 會自動向項目中的每個 ASP.NET 網頁添加一個 Profile 對象(ProfileCommon 類的執行個體)。此對象可對應用程式 Web.config 檔案的 profile 節中所定義的全部屬性提供強型別訪問。您可以擷取此對象的 IntelliSense 資料,並自動在其中儲存和檢索值。

例如,應用程式的 Web.config 檔案可能包含以下部分。

<profile defaultProvider="AspNetSqlProfileProvider"><properties><add name="Teachers"type="Teachers"allowAnonymous="true" /></properties></profile>


在此情況下,可以向頁中添加以下代碼,以儲存並檢索有關 Teachers 對象的資訊,如下面的樣本所示。
public partial class _Default : System.Web.UI.Page{protected void Button1_Click(object sender, EventArgs e){Teachers teachers = new Teachers();teachers.Add(new Teacher("Scott"));teachers.Add(new Teacher("Bob"));teachers.Add(new Teacher("Paul"));Profile.Teachers = teachers;}protected void Button2_Click(object sender, EventArgs e){GridView1.DataSource = Profile.Teachers;GridView1.DataBind();}}

Visual Studio 2008 Web 應用程式項目不會自動包含 ProfileCommon 類。但是,您可以建立自己的 ProfileCommon 類,並在其中包含設定檔系統中已配置項的強型別屬性。隨後,您可以訪問 HttpContext 對象的當前 Profile 屬性,以擷取並設定這些強型別屬性。下面的樣本示範如何建立一個自訂 ProfileCommon 類。

using System;using System.Collections.Generic;using System.Text;using System.Web;using System.Web.Profile;namespace WebApplication6{public class ProfileCommon{public Teachers Teachers{get{return (Teachers) HttpContext.Current.Profile.GetPropertyValue("Teachers");}set{HttpContext.Current.Profile.SetPropertyValue("Teachers",value);}}}}

接下來,您可以向必須使用設定檔系統的頁中添加名為 Profile 的 ProfileCommon 類的一個執行個體,如下面的樣本所示。

namespace WebApplication20{public partial class _Default : System.Web.UI.Page{ProfileCommon Profile = new ProfileCommon();protected void Button1_Click(object sender, EventArgs e){Teachers teachers = new Teachers();teachers.Add(new Teacher("scott"));teachers.Add(new Teacher("bob"));teachers.Add(new Teacher("paul"));Profile.Teachers = teachers;}protected void Button2_Click(object sender, EventArgs e){GridView1.DataSource = Profile.Teachers;GridView1.DataBind();}}}

您無需更改頁上的任何其他代碼,即可像在原始網站項目中那樣使用設定檔系統。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.