共用方式為


轉換至 Visual Web Developer 的疑難排解

更新:2007 年 11 月

當您使用 Microsoft Visual Web Developer 開啟以 Microsoft Visual Studio .NET 先前版本建立的 Web 應用程式專案時,Visual Web Developer 會自動將 Web 應用程式轉換成 ASP.NET 2.0 版中所使用的格式。

注意事項:

如需轉換處理序的詳細資訊,請參閱從 Visual Studio .NET 轉換 Web 專案

在部分情況下,您的 Web 應用程式在轉換之後的行為會有所不同。本主題描述這其中最常見的情況,並提出建議方案。如需移轉疑難排解的詳細資訊,您也可以參考 ASP.NET Development Center for Migration 上的移轉資訊。

這個主題描述了下列轉換問題:

  • 控制項在轉換後呈現不同的標記

  • 標記驗證產生錯誤

  • 在轉換之後會引發網頁事件兩次

  • 編譯期間報告之模稜兩可的類別

  • 與程式碼後置頁面模型之變更相關的錯誤

  • 剖析錯誤

  • 已排除的檔案不再被排除

  • 部分轉換之混合專案類型的方案

  • 將 Web 架構站台開啟為檔案系統站台

  • 程式碼後置檔案中的用戶端 ID 被刪除

  • 循環參考錯誤

控制項在轉換後呈現不同的標記

在 ASP.NET 2.0 中,除非瀏覽器被認定不支援 XHTML 功能,否則 Page 類別和 ASP.NET Web 伺服器控制項預設會呈現與 XHTML 1.0 Transitional 標準相容的標記。轉換精靈會自動將 xhtmlConformance 項目的 mode 屬性設定為 Legacy。在轉換之後,項目的呈現方式可能會與在先前版本 ASP.NET 中的呈現方式稍有不同。在大部分情況下,呈現方式的差異不會影響應用程式的功能。然而,如果您具有依賴特定標記 (Tag) 或屬性 (Attribute) 的用戶端指令碼,則應用程式的運作方式可能不會像之前一樣運作。

如需詳細資訊,請參閱ASP.NET 和 XHTML

標記驗證產生錯誤

在移轉之後,預設的標記驗證結構描述會設定為 Internet Explorer 6.0。這表示編輯器會根據定義 Microsoft Internet Explorer 6.0 認定什麼是有效之 HTML 的結構描述,比較網頁中的標記。採取此步驟是為了讓轉換為 Visual Web Developer 變得更容易。這對修改標記而言是很好的練習,如此一來應用程式網頁就會使用 XHTML 1.0 Transitional 驗證結構描述進行驗證。

如需如何變更驗證結構描述的詳細資訊,請參閱 HOW TO:在 Visual Web Developer 中為 HTML 編輯選取驗證結構描述

在轉換之後會引發網頁事件兩次

轉換處理序會移除 @ Page 指示詞的 AutoEventWireup 屬性。這個屬性的預設值為 true,這表示頁面會自動引發名為 Page_event 的事件。如果網頁已將 AutoEventWireup 屬性明確設為 false,則在轉換之後網頁上的事件會自動引發。如果網頁包括引發事件的其他明確方式 (例如 Visual Basic 中的 Handles 關鍵字),則可能會引發事件兩次。若要解決這個問題,請將 AutoEventWireup="false" 加入 @ Page 指示詞。

編譯期間報告之模稜兩可的類別

在轉換專案之後,編譯器可能會將類別報告為模棱兩可,這表示它是從多個命名空間匯入的。例如,如果已轉換的專案建立 Cache 類別的執行個體,則編譯器會報告類別同時位於 System.Net 和 System.Web.Caching 命名空間中。

在這種情況中,.NET Framework 2.0 版會包含與現有類別同名的新類別。若要修正此問題,請在程式碼中找出該類別的參考,然後在類別名稱前面加上命名空間名稱,以建立完整的參考。

與程式碼後置頁面模型之變更相關的錯誤

在程式碼後置類別中,如果轉換可以存取類別 Protected 成員之 .aspx 頁面的專案,會產生例外狀。這是因為變更 .NET Framework 2.0 中的程式碼後置模型所造成。在 .NET Framework 先前的版本中,頁面是程式碼後置類別的衍生類別。但是,在 ASP.NET 2.0 中,程式碼後置類別會定義產生頁面時與 .aspx 頁面搭配使用,以建立已編譯頁面的部分類別。

您可能會遇到此轉換問題的常見案例位於定義基底類別程式碼後置類別中之共用配置元件的應用程式中。在這種情況下,您可以利用使用者控制項 (User Control) 或主版頁面 (Master Page),或是利用 @ Page 指示詞的 CodeFileBaseClass 屬性,取得相同的共用配置功能。如需開發使用者控制項的詳細資訊,請參閱 ASP.NET 使用者控制項概觀。如需使用主版頁面的詳細資訊,請參閱 ASP.NET 主版頁面概觀

剖析錯誤

轉換精靈會針對無法進行剖析的 .aspx 檔案報告剖析錯誤。剖析問題的原因可分成下列幾個類別:

  • .aspx 頁面的格式在執行轉換精靈之前是不正確的

  • 找不到 @ Page 指示詞的 CodeBehind 或 Src 屬性

  • 找不到 .aspx 頁面中參考的程式碼後置檔案

  • 專案檔 (例如,.csproj 或 .vbproj) 中列出 .aspx 檔案,但該檔案不在專案目錄中。如果檔案不是專案的一部分,則可以忽略此錯誤

已排除的檔案不再被排除

在舊版 Visual Studio 中,您可以選擇包含或排除 Web 專案中的檔案。此外,也可以藉由將專案的建置動作設定為 None,將檔案從專案建置中排除。移轉精靈會將這兩種情況視為相異。移轉精靈會轉換 Web 專案中未標記為已排除的檔案。移轉精靈不會轉換不屬於專案建置一部分的檔案,這類檔案的建置動作皆設定為 None。

轉換處理序完成之後,您可以刪除任何先前排除的檔案,或將它們重新命名為 Visual Studio 不會使用的副檔名 (例如,.exclude 副檔名)。如果 Web 專案內的專案檔案未被轉換,請檢查並確認它的建置動作沒有設定為 None。

與檔案關聯之建置動作設定為 None 的檔案會在轉換報告中產生錯誤訊息。如需轉換報告的詳細資訊,請參閱移轉轉換報告格式

部分轉換之混合專案類型的方案

在 Microsoft Visual Studio 2005 和舊版中,可能會有由 Web 專案和用戶端專案 (例如類別庫或 Windows 應用程式) 組合而成的方案。如果您使用 Microsoft Visual Studio 2005 的 Express 版,則只有該 Express 版相關的部分方案可以進行轉換。例如,如果您在 Visual Web Developer 2005 Express 版中使用轉換精靈,則不論方案所包含的其他專案類型為何,都只能轉換您所開啟之方案的 Web 專案。所產生的轉換方案將只有部分被轉換。若要完整轉換混合的專案類型方案,請使用 Visual Web Developer 2005、Visual Studio 2005 或 Visual Studio 2005 Team System。

將 Web 架構站台開啟為檔案架構站台

若要開啟以舊版 Visual Studio 建立的網站,建議您使用 Visual Web Developer 2005 中的 [開啟網站] 功能表選項。然後,您可以選擇將網站開啟為檔案架構的站台、本機 Microsoft Internet Information Services (IIS) 站台、檔案傳輸通訊協定 (File Transfer Protocol,FTP) 部署的站台或遠端站台。將 Web 架構站台開啟為檔案架構站台會造成 IIS 中繼資料 (Metadata) 資訊遺失。特別是,標記為虛擬目錄之子資料夾的相關資訊將無法保留。當 Web 架構站台轉換為檔案架構站台時,轉換報告會列出警告。

建議您關閉站台,再使用 [開啟網站] 命令和選取 [本機 IIS] 索引標籤來重新開啟它。如需如何使用移轉精靈的詳細資訊,請參閱 HOW TO:將 Visual Studio .NET 專案轉換為 Visual Studio 2005。如需轉換報告的詳細資訊,請參閱移轉轉換報告格式

程式碼後置檔案中的用戶端 ID 被刪除

如果您的標記使用了用戶端 ID 屬性 (例如,在 HTML div 項目中),而該屬性的名稱與程式碼後置頁面中所宣告的成員變數名稱相同,則轉換過程中會將標記中的 ID 標記移除。

若要解決這個問題,請在轉換之前先檢閱您的標記和程式碼,並找出用戶端 ID 屬性和成員變數之間的名稱衝突,再變更它們,讓它們使用不同的名稱。

循環參考錯誤

轉換處理序會將 @ Reference 指示詞加入參考其他頁面或使用者控制項的程式碼後置頁面。可能有些情況會建立循環參考。若要協助進行疑難排解,您可以將 compilation 項目的 batch 屬性設定為 False。預設的 batch 屬性值是 True。將 batch 設定為 False 可能會排除循環參考問題。另一個較長的說法是,您可以將頁面或使用者控制項重新設計為使用 App_Code 資料夾中儲存之類別中定義的抽象基底類別,並將 batch 屬性設定回 True。

請參閱

工作

HOW TO:在 Visual Web Developer 中為 HTML 編輯選取驗證結構描述

概念

Web 方案和專案檔的轉換

其他資源

ASP.NET Development Center for Migration