将 Web 项目从 Visual Studio .Net 2002/2003 转换到 Visual Studio 2005 的分步指南
本頁內(nèi)容
| 轉(zhuǎn)換注意事項(xiàng) | |
| 第一部分:準(zhǔn)備要轉(zhuǎn)換的 Visual Studio .Net 2002/2003 Web 項(xiàng)目 | |
| 第二部分:遷移您的 Web 項(xiàng)目 | |
| 第三部分:完成遷移的遷移后步驟 | |
| 第四部分:其他信息 | |
| 小結(jié) |
轉(zhuǎn)換注意事項(xiàng)
在考慮將 Visual Studio .Net 2003 Web 項(xiàng)目轉(zhuǎn)換為 Visual Studio 2005 格式的最佳做法之前,需要了解轉(zhuǎn)換的優(yōu)點(diǎn)并確定轉(zhuǎn)換是否有意義。轉(zhuǎn)換的決定最終取決于具體的應(yīng)用程序和情況。
如果您有一個(gè)正在使用的應(yīng)用程序并且不常更新,則轉(zhuǎn)換它可能沒什么意義,因?yàn)檫@么做的好處可能很有限。如果選擇不將應(yīng)用程序轉(zhuǎn)換為 Visual Studio 2005 語法,仍有兩種選擇可以考慮:
| 1. | 在應(yīng)用程序虛擬目錄的 IIS 設(shè)置中,保持將該應(yīng)用程序映射到 ASP.Net 1.1(或 1.0)。繼續(xù)使用 Visual Studio .Net 2003 編輯應(yīng)用程序代碼。 |
| 2. | 在 IIS 設(shè)置中,將應(yīng)用程序映射為在 ASP.Net 2.0 下運(yùn)行,但不要從 Visual Studio .Net 2003 中升級(jí)項(xiàng)目格式。在本例中,應(yīng)用程序?qū)⑹芤嬗?ASP.Net 2.0 中的幾個(gè)安全性和性能增強(qiáng)功能,不過您需要繼續(xù)使用 Visual Studio .Net 2003 來編輯應(yīng)用程序代碼。注:您可以在同一臺(tái) IIS 服務(wù)器上同時(shí)運(yùn)行 ASP.Net 1.1 和 ASP.Net 2.0 應(yīng)用程序。 |
將 Web 應(yīng)用程序項(xiàng)目轉(zhuǎn)換到 Visual Studio 2005 的主要優(yōu)點(diǎn)是,能夠在現(xiàn)有應(yīng)用程序中使用 ASP.Net 2.0 的許多新增功能(例如,母版頁等)。如果您希望增強(qiáng)一個(gè)現(xiàn)有的、用 Visual Studio .Net 2003 生成的 Web 應(yīng)用程序,升級(jí)到 Visual Studio 2005 可能是最正確的決定。
對(duì)轉(zhuǎn)換 Web 項(xiàng)目的預(yù)期
對(duì)于相對(duì)簡單的 Web 項(xiàng)目(其中一個(gè) Web 項(xiàng)目是 Visual Studio .Net 2003 解決方案中的唯一項(xiàng)目),轉(zhuǎn)換應(yīng)該是一個(gè)相對(duì)自動(dòng)的過程,需要很少的時(shí)間或問題解決方案。
如果要轉(zhuǎn)換的應(yīng)用程序大小合理,并且一個(gè) Visual Studio 解決方案中有幾個(gè) Web 項(xiàng)目和其他項(xiàng)目(如類庫),則在遷移期間可能會(huì)遇到問題。做好準(zhǔn)備用一天中較好的一段時(shí)間來完成整個(gè)過程。本文提供的步驟和指導(dǎo)可以幫助信息完備的用戶遷移大多數(shù)中等復(fù)雜程度的應(yīng)用程序。
返回頁首第一部分:準(zhǔn)備要轉(zhuǎn)換的 Visual Studio .Net 2002/2003 Web 項(xiàng)目
在 Visual Studio .Net 2003 中配置應(yīng)用程序
升級(jí)項(xiàng)目時(shí),建議將 Visual Studio .Net 2002/2003 和 Visual Studio 2005 安裝在同一臺(tái)計(jì)算機(jī)上。
準(zhǔn)備遷移 Visual Studio .Net 2003 Web 項(xiàng)目時(shí),首先要確保該項(xiàng)目已配置并且在 Visual Studio .Net 2003 環(huán)境中正常運(yùn)行。
如果要升級(jí)一個(gè)其解決方案中包括多個(gè)項(xiàng)目的應(yīng)用程序,則確保在 isual Studio .Net 2003 內(nèi)部生成和運(yùn)行整個(gè)解決方案,然后才能進(jìn)行遷移。即使要升級(jí)一個(gè)由單個(gè) Web 項(xiàng)目表示的應(yīng)用程序,還是要打開解決方案文件并在 Visual Studio .Net 2003 中測(cè)試和運(yùn)行應(yīng)用程序。為此,請(qǐng)?jiān)?Visual Studio .Net 2003 中單擊 Open Solution。
當(dāng)解決方案在 Visual Studio .Net 2003 中打開時(shí),單擊 Build 菜單上的 Build Solution,以確保應(yīng)用程序編譯不會(huì)出錯(cuò)。
圖 1. 生成解決方案
要運(yùn)行此應(yīng)用程序,請(qǐng)?jiān)?Visual Studio .Net 2003 中按 F5,并確保該應(yīng)用程序正常運(yùn)行,不會(huì)出錯(cuò)。確保嘗試解決方案中所有 Web 項(xiàng)目中的頁,以確保 IIS 配置正確,可以支持應(yīng)用程序頁。
將排除的文件移到 Web 項(xiàng)目外
另一個(gè)可以將潛在問題降到最少的措施是,將所有排除的文件從您的 Web 項(xiàng)目中刪除。如果在 Web 項(xiàng)目文件夾結(jié)構(gòu)中存在任何不被解決方案中的任何 Web 項(xiàng)目引用的文件,則將這些文件移到一個(gè)單獨(dú)的位置,然后再遷移您的解決方案。
要幫助找到這些排除的文件,您可以使用解決方案資源管理器中的 Show All Files 按鈕。
圖 2. 顯示隱藏文件
檢查重復(fù)的項(xiàng)目文件
另一個(gè)可能產(chǎn)生遷移問題的項(xiàng)目結(jié)構(gòu)問題是,IIS Web 應(yīng)用程序的根文件夾中有多個(gè)項(xiàng)目文件。通常,給定的 IIS Web 應(yīng)用程序的根文件夾中只有一個(gè)項(xiàng)目文件(*.vbproj 或 *.csproj),但有時(shí)存在多個(gè)項(xiàng)目文件。
IIS Web 應(yīng)用程序的根文件夾中有多個(gè)項(xiàng)目文件,一個(gè)常見的原因是,如果您有一個(gè)包含多個(gè) Web 項(xiàng)目的解決方案,則每個(gè)項(xiàng)目都在該 Web 應(yīng)用程序中生成單獨(dú)的一組頁面。這種類型的解決方案結(jié)構(gòu)使用戶可以在單個(gè) Web 應(yīng)用程序中將一組不同的頁面組成不同程序集。下面描述這種結(jié)構(gòu)的一個(gè)示例。
如果在 IIS Web 應(yīng)用程序的同一個(gè)根文件夾下有多個(gè) Web 項(xiàng)目,只要每個(gè)項(xiàng)目不包括相同的一組文件,您在遷移期間就可能不會(huì)碰到任何問題。
如果在多個(gè) Web 項(xiàng)目中引用了相同的文件集或子文件集,則這些普通文件將被遷移兩次并且出錯(cuò)。這種情況通常發(fā)生在創(chuàng)建了現(xiàn)有項(xiàng)目文件的備份副本后,這樣會(huì)產(chǎn)生兩個(gè)具有一組完全相同文件的 Web 項(xiàng)目文件。如果在 Web 應(yīng)用程序的根文件夾中有多個(gè) Web 項(xiàng)目文件并且它們引用相同的文件集,則確保刪除該解決方案不使用的任何項(xiàng)目文件,以保證 Web 項(xiàng)目中的文件不會(huì)遷移兩次。
檢查包括相同 Web 項(xiàng)目的多個(gè)解決方案
推薦的過程是遷移整個(gè) Visual Studio 解決方案,盡管可能有幾個(gè)解決方案代表正在遷移的應(yīng)用程序。在這種情況下,您可能每次遷移一個(gè)解決方案,以便將整個(gè)應(yīng)用程序轉(zhuǎn)換到 Visual Studio 2005。例如,如果兩個(gè) Visual Studio 解決方案包括同一個(gè) Web 項(xiàng)目并且嘗試對(duì)它們進(jìn)行升級(jí),則在遷移第二個(gè)解決方案時(shí)可能會(huì)出現(xiàn)錯(cuò)誤。
為了避免這種情況,請(qǐng)遷移第一個(gè)解決方案。遷移第二個(gè)解決方案時(shí),從第二個(gè)解決方案中刪除所有作為第一個(gè)解決方案一部分已進(jìn)行遷移的 Web 項(xiàng)目。刪除已遷移的 Web 項(xiàng)目后,即可遷移第二個(gè)解決方案,不會(huì)產(chǎn)生任何問題。遷移第二個(gè)解決方案后,可以重新添加已遷移的 Web 項(xiàng)目。
刪除對(duì) Web 項(xiàng)目的引用
如果您有一個(gè)包含多個(gè)項(xiàng)目的解決方案,確保不存在對(duì)解決方案中 Web 項(xiàng)目的任何引用也非常重要。這種模式的一個(gè)示例如下:如果有兩個(gè) Web 項(xiàng)目(WebProjectA 和 WebProjectB),則 WebProjectB 引用 WebProjectA 以使用 WebProjectA 中的某些類。
圖 3. 刪除 Web 項(xiàng)目引用
解決方案遷移到 Visual Studio 2005 后,在 Visual Studio .Net 2003 中啟用的該模式將不再起作用。幸運(yùn)的是,可以修改解決方案代碼來避免這種情況。為此,可以通過將共享代碼移動(dòng)到類庫,并從該類庫引用共享代碼來使用與上一部分類似的模型。
我們將使用 WebProjectA 和 WebProjectB 的簡單示例(它有一個(gè)對(duì) WebProjectA 的項(xiàng)目引用)來闡述如何執(zhí)行該操作:
| 1. | 使用 File > Add Project > New Project 向解決方案添加相同語言(Visual Basic 或 C#)的新 ClassLibrary 項(xiàng)目。 |
| 2. | 對(duì)于 WebProjectB 需要的、WebProjectA 中的任何類,將這些類復(fù)制到新的 Class Library 項(xiàng)目中。 |
| 3. | 在 WebProjectB 中刪除對(duì) WebProjectA 的引用 |
| 4. | 在 WebProjectA 和 WebProjectB 中,向第 3 步中創(chuàng)建的 Class Library 項(xiàng)目添加一個(gè)新的“項(xiàng)目引用”。 |
| 5. | 使用上面提供的指導(dǎo)重新構(gòu)建解決方案后,進(jìn)行檢查以確保在 Visual Studio .Net 2003 中干凈地生成解決方案。完成解決方案生成后,運(yùn)行整個(gè)應(yīng)用程序以確保它仍具有全部功能。 圖 4. 遷移Web 項(xiàng)目后的解決方案 |
第二部分:遷移您的 Web 項(xiàng)目
運(yùn)行 Visual Studio 2005 Migration Wizard
使用第一部分中的準(zhǔn)則重新構(gòu)建 Visual Studio .Net 2003 解決方案,并正確驗(yàn)證整個(gè)解決方案的生成和運(yùn)行后,現(xiàn)在該準(zhǔn)備遷移到 Visual Studio 2005 了。
升級(jí)應(yīng)用程序時(shí),最佳做法是在已經(jīng)使用 Visual Studio .Net 2003 進(jìn)行測(cè)試和運(yùn)行的計(jì)算機(jī)上進(jìn)行遷移。Visual Studio 2005 完全可以與 Visual Studio .Net 2003 安裝在同一臺(tái)計(jì)算機(jī)上,因此您應(yīng)該能夠在同一臺(tái)計(jì)算機(jī)上安裝 Visual Studio 2005,而不產(chǎn)生任何問題。
在同一臺(tái)計(jì)算機(jī)上安裝 Visual Studio 2005 后,通過打開代表應(yīng)用程序的解決方案文件來升級(jí)應(yīng)用程序。雖然有可能打開單個(gè)項(xiàng)目并遷移它們,但最省事的途徑是遷移整個(gè)解決方案。為此,請(qǐng)?jiān)?Visual Studio 2005 中單擊 Open Project,并打開表示待升級(jí)應(yīng)用程序的解決方案文件 (*.sln)。屏幕將顯示以下內(nèi)容,指示可以開始遷移過程:
圖 5:轉(zhuǎn)換向?qū)?/p>
為了獲得最好的結(jié)果,請(qǐng)遵循此向?qū)е刑峁┑哪J(rèn)值以開始遷移。
備份應(yīng)用程序
在該轉(zhuǎn)換向?qū)э@示的步驟中,請(qǐng)密切關(guān)注創(chuàng)建解決方案的備份副本。重新檢查,確保選擇了 Yes 選項(xiàng)以創(chuàng)建備份,而且一定要注意備份位置,以便將來恢復(fù) Visual Studio .Net 2002/2003 Web 應(yīng)用程序的備份。
圖 6. 備份項(xiàng)目
返回頁首第三部分:完成遷移的遷移后步驟
檢查轉(zhuǎn)換報(bào)告
完成 Conversion Wizard 后,會(huì)生成一份概括了遷移過程結(jié)果的 XML 報(bào)告。
圖 7. 轉(zhuǎn)換報(bào)告
一定要注意文檔窗口頂部 URL 字段中顯示的 XML 文件的位置。記下此位置,以便在關(guān)閉文件后可以再次引用 XML 轉(zhuǎn)換報(bào)告。除報(bào)告解決方案中所有項(xiàng)目的錯(cuò)誤和警告的 XML 報(bào)告以外,每個(gè) Web 項(xiàng)目都包含一個(gè) ConversionReport.txt 文件,該文件具有與解決方案中的特定 Web 項(xiàng)目相同的信息。
XML 報(bào)告概括解決方案中每個(gè)項(xiàng)目的結(jié)果。折疊報(bào)告時(shí),您可以快速確定解決方案中的每個(gè)項(xiàng)目生成的警告和錯(cuò)誤的數(shù)量。展開每一部分后,可以詳細(xì)查看特定項(xiàng)目的警告和錯(cuò)誤。
對(duì)于最簡單的應(yīng)用程序,轉(zhuǎn)換報(bào)告可能會(huì)顯示解決方案中的所有項(xiàng)目均成功遷移。在大多數(shù)具有中高等復(fù)雜性的真實(shí)情況中,更可能的結(jié)果是報(bào)告某些遷移錯(cuò)誤和警告,并需要對(duì)它們進(jìn)行調(diào)查。
以下部分介紹解決報(bào)告的問題時(shí)使用的最有效方法。
首先確保編譯類庫項(xiàng)目
通常,用來解決任何所報(bào)告問題的最好方法是修復(fù)解決方案中的每個(gè)項(xiàng)目,首先從共享組件開始,一次修復(fù)一個(gè)。
例如,如果解決方案中存在引用其他項(xiàng)目(如類庫項(xiàng)目)的 Web 項(xiàng)目,則先解決被引用項(xiàng)目中報(bào)告的所有問題。為此,對(duì)于 Web 項(xiàng)目引用的每個(gè)項(xiàng)目,右擊各個(gè)項(xiàng)目,然后選擇 Build Project 以確保它進(jìn)行編譯。
圖 8. 先生成類庫
如果進(jìn)行轉(zhuǎn)換之前就在 Visual Studio .Net 2003 中對(duì)整個(gè)解決方案進(jìn)行了干凈的編譯,則在類庫項(xiàng)目中可能遇到的編譯錯(cuò)誤是與保留關(guān)鍵字的沖突或框架中的新增類型,應(yīng)該直接修復(fù)。
修復(fù)每個(gè) Web 項(xiàng)目中的轉(zhuǎn)換錯(cuò)誤和警告
修復(fù)了解決方案中類庫項(xiàng)目報(bào)告的任何錯(cuò)誤后,下一步是修復(fù)每個(gè) Web 項(xiàng)目中報(bào)告的錯(cuò)誤和警告。對(duì)于每個(gè) Web 項(xiàng)目,使用以下準(zhǔn)則作為解決所發(fā)現(xiàn)問題的方法:
| 1. | 打開 Web.config 文件,并關(guān)閉批編譯。通過將編譯標(biāo)記中的 batch=false 屬性設(shè)置成以下形式,可以實(shí)現(xiàn)該操作:。關(guān)閉批編譯可降低掩蓋應(yīng)用程序中可能存在但未報(bào)告的編譯錯(cuò)誤的可能。 | ||||
| 2. | 通過打開 Web 項(xiàng)目根文件夾中的 conversionreport.txt 文件來查看已報(bào)告的警告和錯(cuò)誤。該文本文件包括遷移期間標(biāo)題為 Errors、Warnings 和 Comments 的部分。查看 Errors 部分和 Warnings 部分,并嘗試使用以下方法解決問題(Comments 部分主要是提供信息,無需任何操作):
| ||||
| 3. | 解決 conversionreport.txt 文件中的所有錯(cuò)誤后,生成 Web 項(xiàng)目以解決可能存在的任何其他的編譯錯(cuò)誤。為此,請(qǐng)選擇您正在使用的 Web 站點(diǎn)項(xiàng)目的根節(jié)點(diǎn),并在 Build 菜單上選擇 Build Web Site。請(qǐng)?jiān)俅螀㈤啞癈ommon ASP.Net 2.0 Conversion Issues and Solutions”,以了解任何可能報(bào)告的特定編譯錯(cuò)誤,并獲得有關(guān)如何糾正這些錯(cuò)誤的指導(dǎo)。 | ||||
| 4. | 解決報(bào)告的問題且 Web 項(xiàng)目成功編譯后,還有兩個(gè)推薦的步驟:
|
修復(fù)每個(gè) Web 項(xiàng)目中的運(yùn)行時(shí)問題
在 Visual Studio 2005 中對(duì)所有類庫和每個(gè) Web 項(xiàng)目進(jìn)行干凈的編譯后,下一步就是運(yùn)行整個(gè)應(yīng)用程序并驗(yàn)證功能。在您測(cè)試應(yīng)用程序功能時(shí),可能會(huì)遇到一些運(yùn)行時(shí)異常,這些異常可能是由于違反了 ASP.Net 1.1 和 ASP.Net 2.0 之間引入的改變而產(chǎn)生的。“Common ASP.Net 2.0 Conversion Issues and Solutions”有助于識(shí)別這些錯(cuò)誤并對(duì)其進(jìn)行修復(fù)。
返回頁首第四部分:其他信息
本文檔前面的部分介紹了將 Web 項(xiàng)目從 Visual Studio .Net 2003 轉(zhuǎn)換到 Visual Studio 2005 的整個(gè)分步過程。下列部分包括其他有用的信息:
HTML / XHTML 驗(yàn)證錯(cuò)誤
您可能會(huì)遇到 IDE 中的 ASPX 頁和 ASCX 頁處于打開狀態(tài)時(shí)報(bào)告的驗(yàn)證錯(cuò)誤。默認(rèn)情況下,可能會(huì)報(bào)告這些額外錯(cuò)誤,因?yàn)?Visual Studio 2005 擁有基于 XHTML 1.1 標(biāo)準(zhǔn)的更嚴(yán)格的 HTML 驗(yàn)證。
這些不是編譯錯(cuò)誤,不會(huì)影響應(yīng)用程序的功能。如果一個(gè) ASPX 頁或 ASCX 頁處于打開狀態(tài),則這些錯(cuò)誤和編譯錯(cuò)誤出現(xiàn)在同一個(gè)錯(cuò)誤列表中,因此可以通過增加要查看的錯(cuò)誤總數(shù)來增加復(fù)雜性。
可以執(zhí)行一些操作來推遲處理這些驗(yàn)證錯(cuò)誤。
| ? | 將 Visual Studio 2005 中的默認(rèn)驗(yàn)證改為“Internet Explorer 6.0”。如果打開 ASPX 頁,則可以在工具欄中進(jìn)行此操作。 圖 9. 設(shè)置驗(yàn)證集 |
| ? | 如果在應(yīng)用程序中不一定要遵從 XHTML,則可以選擇將驗(yàn)證設(shè)置為“Internet Explorer 6.0”。如果您愿意確保遵從 XHTML,則建議在轉(zhuǎn)換期間將該驗(yàn)證設(shè)為“Internet Explorer 6.0”,轉(zhuǎn)換完成后將該驗(yàn)證切換為 XHTML。 |
| ? | 另一個(gè)竅門是,在選擇 Build Website 后,關(guān)閉所有打開的 ASPX 頁和 ASCX 頁。這樣,HTML 驗(yàn)證錯(cuò)誤就不會(huì)與報(bào)告的任何編譯錯(cuò)誤混在一起。這有助于識(shí)別哪些錯(cuò)誤與站點(diǎn)編譯有關(guān),哪些錯(cuò)誤僅僅是 HTML 中的驗(yàn)證問題。 |
使用“Local IIS”選項(xiàng)卡或解決方案文件打開 Web 站點(diǎn)項(xiàng)目
本文,我們建議您打開解決方案文件 (*.sln) 以打開 Web 項(xiàng)目。這樣做可以確保在轉(zhuǎn)換后將 Visual Studio .Net 2003 Web 項(xiàng)目作為 Visual Studio 2005 的“Local IIS”項(xiàng)目打開。
通過打開項(xiàng)目文件夾而不是解決方案文件,還可以在 Visual Studio 2005 中打開 Web 站點(diǎn)項(xiàng)目。如果您或小組中的其他人成員決定用這種方式打開項(xiàng)目,請(qǐng)確保使用 Visual Studio 2005 中的“Local IIS”選項(xiàng)卡打開任何轉(zhuǎn)換后的項(xiàng)目。
圖 10. 打開項(xiàng)目
返回頁首小結(jié)
概括而言,Visual Studio 2005 和 ASP.NET 2.0 都提供了許多新增功能,這使得生成 Web 應(yīng)用程序比以前更容易。您應(yīng)該評(píng)估利用這些新功能對(duì)于將特定的 Visual Studio 2003 Web 項(xiàng)目轉(zhuǎn)換到 Visual Studio 2005 是否有意義。
當(dāng)您確定有必要將您的 Web 應(yīng)用程序升級(jí)到 Visual Studio 2005 時(shí),遵循此白皮書中提供的指導(dǎo)并運(yùn)行 Visual Studio 2005 中內(nèi)置的轉(zhuǎn)換向?qū)⑹拐麄€(gè)過程變得簡單且盡可能有效。
總結(jié)
以上是生活随笔為你收集整理的将 Web 项目从 Visual Studio .Net 2002/2003 转换到 Visual Studio 2005 的分步指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (论坛答疑点滴)怎么在datagrid翻
- 下一篇: ASP.NET跨页面传值技巧