VS2003-2005 移植

VS2003 WEB應用程序向VS2005的移植

譯自:http://webproject.scottgu.com/VisualBasic/Migration/Migration.aspx

作者:Scott Guthrie.

 

VS2003 WEB應用程序向VS2005的移植

 

下面的嚮導將向你展示,如何快速簡便地把VS2003 網絡應用程序移植到VS2005平臺。請詳細閱讀第一至第六條指引,目的是讓你瞭解VS2005的網絡應用程序的運行模式,因爲這和以前BEAT1(和最終版的VS2005存在一定的差異,某些功能在BEAT版裏不支持) VS2003的運行模式存在着差異。

 

利用VS2005WEB APPLICATION PROJECT PREVIEW 時行VS2003的程序移植

 

有很多種不同的移植方案,一種默認的移植方式是通過網站應用程序模式。在此,我們利用的是一種非常簡單的移植方案,和默認方式的原理一樣,你不必要去對程序結構做任何修改。

唯一要做的是忽略API引用的警告。

 

在使用VS2005最終版時,當你打開VS2003的工程項目時,它會提示你,是否對當前打開的項目進行轉換。

 

自動移植嚮導在第一版中並不支持,但是根據下面的指引,你可達到同樣的效果。一般來說,你可以在15-20以內完成前八個步驟。(在這裏寫的太詳細了,其實每步可能只要1,2分鐘就可完成)。

 

請仔細按照步驟進行操作,如果在移植當中遇到問題(成功最好),那麼請來信,我會在下一次的更新中回答你的疑問。

 

STEP 0:安裝VS2005 網絡應用程序工程項目預攬

 

如果你安裝的是VS2005 最終版,那麼,你就不必要再進行安裝了,因了這項功能已經內置在VS2005裏面了,如果你用的VS2005沒有此項功能,你可以點擊下載並安裝,在使用前請仔細閱讀說明。

 

STEP 1:備份你要轉換的VS2003項目文件

 

在嘗試以下步驟之前,請確認你已經對你要轉換的項目就行了完整的備份,這樣以備不測。因爲在轉換的過程當中,我們很難保證不出問題,一但出了問題,我們可以利用這個備份進行迴轉。

 

STEP 2:打開你的VS2003項目,確保項目運行正常

 

在進行轉換之前,還要對你的項目做最後的編譯和測試,保證沒有錯誤之後,纔可下面的步驟。這樣做是爲了在以後的步驟執行當中減少不必要麻煩(特別是,如果因爲最後一次的文件移動所導致的問題)。

 

STEP 3:修改.sln .vbproj 項目文件,使之成爲類庫文件

 

 如果你使用的是VS2005最終版,那麼就不必要做如下更換,因爲VS2005會自動幫你完成以下工作。如果是VS2005第一版,請仔細閱讀並認真執行。

 

1)        關閉VS2003解決方案

2)        用記事本打開.sln文件,此文件是基於文本的,裏面記錄着詳細的關於解決方案的內容。當你打開一個解決方案文件時,會類似以下的文本內容:

    Microsoft Visual Studio Solution File, Format Version 8.00

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortalVBVS", "http://localhost/PortalVBVS/PortalVBVS.vbproj", "{345F0E9A-24F3-451C-B8EE-6B3796797BC8}"

        ProjectSection(ProjectDependencies) = postProject

        EndProjectSection

EndProject

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1/ClassLibrary1.csproj", "{50CC4DB3-6AE3-4A01-A3C8-000DB914F9CF}"

        ProjectSection(ProjectDependencies) = postProject

        EndProjectSection

EndProject

Global

        GlobalSection(SolutionConfiguration) = preSolution

               Debug = Debug

               Release = Release

        EndGlobalSection

        GlobalSection(ProjectConfiguration) = postSolution

               {345F0E9A-24F3-451C-B8EE-6B3796797BC8}.Debug.ActiveCfg = Debug|.NET

               {345F0E9A-24F3-451C-B8EE-6B3796797BC8}.Debug.Build.0 = Debug|.NET

               {345F0E9A-24F3-451C-B8EE-6B3796797BC8}.Release.ActiveCfg = Release|.NET

               {345F0E9A-24F3-451C-B8EE-6B3796797BC8}.Release.Build.0 = Release|.NET

               {50CC4DB3-6AE3-4A01-A3C8-000DB914F9CF}.Debug.ActiveCfg = Debug|.NET

               {50CC4DB3-6AE3-4A01-A3C8-000DB914F9CF}.Debug.Build.0 = Debug|.NET

               {50CC4DB3-6AE3-4A01-A3C8-000DB914F9CF}.Release.ActiveCfg = Release|.NET

               {50CC4DB3-6AE3-4A01-A3C8-000DB914F9CF}.Release.Build.0 = Release|.NET

        EndGlobalSection

        GlobalSection(ExtensibilityGlobals) = postSolution

        EndGlobalSection

        GlobalSection(ExtensibilityAddIns) = postSolution

        EndGlobalSection

EndGlobal

 

手工對該文件進行修改,把http//URL定義更改爲文件引用類型路徑,如上所示就是把http://localhost/PortalVBVS/PortalVBVS.vbproj 改爲PortalVBVS/PortalVBVS.vbproj 注意,這裏是 “/” 不是 ”/”,因爲這裏是文件路徑. 更改的結果如下:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortalVBVS", "PortalVBVS/PortalVBVS.vbproj", "{345F0E9A-24F3-451C-B8EE-6B3796797BC8}"

        ProjectSection(ProjectDependencies) = postProject

        EndProjectSection

EndProject

 

3)        利用記事本對工程文件進行更改

  <VisualStudioProject>

    <VisualBasic

        ProjectType = "Web"

        ProductVersion = "7.10.3077"

        SchemaVersion = "2.0"

        ProjectGuid = "{345F0E9A-24F3-451C-B8EE-6B3796797BC8}"

>

 

WEB 更改爲 LOCAL ,保存退出.

<VisualStudioProject>

    <VisualBasic

        ProjectType = "Local"

        ProductVersion = "7.10.3077"

        SchemaVersion = "2.0"

        ProjectGuid = "{345F0E9A-24F3-451C-B8EE-6B3796797BC8}"

    >

 

 

4)        最後一步,也是關鍵的一步,刪除與工程相關的.webinfo文件.如果項目名稱是LGP.vbproj ,那麼就要把LGP.vbproj.webinfo文件刪除.

 

STEP 4 重新在VS2003裏打開工程,檢查項目是否成功打開和編譯是否正確

 

一但你完成了以上幾個步驟,那麼你的Web工程在VS2003中會當作類庫看待。他們的意義相同,但是與FrontPage 服務器擴展的連接將不存在。

 

VS2003中重新打開,檢測是否編譯完好,注意你必須直接打開解決方案文件,你已經不能再用服務器擴展形式《HTTP//》打開了。因爲你剛纔把工程文件轉換成了類庫文件了。確保你的工程都會在解決方案瀏覽器窗口打開,然後選擇,BuildàBuild Solution 並保證完全編譯正確。這很容易完成,最容易出錯是的是引用項目的路徑問題。或者是.webinfo文件沒有刪除。如果出現這種錯誤,關掉VS,排除錯誤,再進行打開,編譯。

 

SETP 5:用VS2005打開並執行移植

 

關閉當前打開的VS2003,打開VS2005。選擇 文件à打開文件,選擇你要進行轉換的工程解決方案。VS2005會自動運行項目移植嚮導。



根據嚮導進行移植,
VS2005會把工程文件轉換爲MSBuild類型的文件(VS2005中工程文件專用的格式)。在此過程中會自動產生一個XML格式的轉換概要,一般來說,這個文件保存在你當前解決方案的同一目錄下。如果在以後的編譯過程過程出現了錯誤,你可以通過查看此文件來追蹤錯誤。

 

STEP 6:轉換你的工程項目

 

現在,你的工程已經轉換成了VS2005 MSBuild格式的工程文件,下一步就是要添加一個原數據值,讓VS2005把它們當成VS2005工程文件來對待。可以這樣做:

1)  首先完全保存你打開的文件和已完成轉換的文件

2)  關閉解決方案

3)  用記事本打開工程文件進行再次編輯,這次你的工程文件會是如下格式(MSBUILD):

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>

    <ProjectType>Local</ProjectType>

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>

    <ProductVersion>8.0.50727</ProductVersion>

    <SchemaVersion>2.0</SchemaVersion>

    <ProjectGuid>{22C5DF64-8114-41F3-92DF-DBC285835584}</ProjectGuid>

    <OutputType>Library</OutputType>

    <AppDesignerFolder>Properties</AppDesignerFolder>

    <RootNamespace>WebApplication10</RootNamespace>

    <AssemblyName>WebApplication10</AssemblyName>

  </PropertyGroup>

刪除<ProjectType>行,並用下列值代替:

<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>

這個值可以讓VS2005知道,不能把它當作普通的類庫工程,而是WEB應用程序。

4)  保存並關閉WEB工程文件,重新打開解決方案文件。

 

STEP 7:利用IIS安裝WEB應用程序

 

一般情況下,你的Web工程會運行在VS內置的Web服務器(aka Cassini.當然,你很想充分利用它的優越性,最簡單的方法是在IIS裏運行。你可以這樣做:

 

1)  在解決方案裏右鍵Web應用程序的根結點,選擇屬性頁,然後打開Web標籤,選擇“Use IIS Web Server”項,輸入 Http://工程項目路徑



最後,關閉屬性頁,保存項目文件。

2)  在解決方案中右鍵,選擇作爲啓動項目。這樣在你按F5(或Ctrl-F5)啓動解決方案時,會把這個項目作爲啓動項目。

3)  運行微軟的IIS管理工具,打開你剛剛輸入的工程路徑屬性頁,選擇 ASP.NET標籤,確保應用程序使用的是ASP.NET2.0配置(默認情況下是1.1)。


如果你用的是
Window server2003IIS6,還應當注意不要把它放在ASP.NET1.1的應用程序池中,否則會出現在同一個程序池裏加載兩個不同版本的CLR錯誤。如果必要,你要新建一個程序池來防止衝突。

 

STEP 8: 處理XHTML的適應性問題

 

在默認情況下,VS2005會自動生成並檢測XHTML標記語言,這可以幫你建立通用的網站應用程序,並且減少你的網頁在呈現時的誤錯。

 

不妙的是,VS2003不會自動生成XHTML標記,所以你應當注意在VS2003應用程序裏的XHTML配置部分。可以這樣來配置:

1)  切換當前配置,把HTML檢驗變成IE6檢驗(這在VS2003中是默認的)。選擇工具à選項菜單項,在彈出的對話框中,選擇文本框選項,把檢驗目標換成IE6,並且取消“顯示錯誤”項。

2)  你還應當考慮在配置文件中加入下面的標籤,這樣可以避免在你的頁面中看到不同的呈現結果。

<system.web>

  <xhtmlConformance mode="Legacy" />

</system.web>

 

STEP 9:編譯,運行工程項目

 

現在你可以編譯你的工程了。在這個階段最容易發生的錯誤是新類名稱的編譯衝突。比如:現在的ASP.NET有內置的菜單和樹控件(就像ProfileMemberShipRoleManagement APIs ,所以會看到一個‘類型不明確’的錯誤。(注:編譯器會列出所有的錯誤詳細信息)。如果這樣,你應當更新你的控件引用名稱,用全稱來代替。比如:把TreeView 改爲myProject.Mycontrol.TreeView

 

另外一個問題是關於VB的,Global將被視爲關鍵字在VB2005中,這意味着你不能再用它來命名類。在VS2003中,Global.asax文件默認是全局類。在升級的過程中,所有的引用都會被自動的重命名爲全局的。如果在你的頁面類或是控件類中,引用了全局類,那麼你要手工的加上“Add”字符在你引用的類名前。

 

你還可能遇到其它的關於API的變更問題,請訪問這個頁面,可以幫你瞭解更詳細的情況。

 

一旦你的編譯工作正確無誤,那麼你就可以在IIS中運行調試了。

 

STEP 10PARTIAL類的轉化

 

當你完成上述步驟時,你的內聯類和其它類將都不會被修改。它們將像在VS2003裏一樣。這樣可以讓移植變得簡單。你也可以隨意選擇你的代碼格式,這樣需要你手工的去更新你的代碼後置類。

 

當然,你也可以利用在VS2005中的新類模式Partial。這樣讓你的代碼看着更簡捷,更有邏輯性。這樣就把當前的代碼後置文件變換成了兩個分別的文件:一個是代碼和事件處理,另一個是爲頁面中申明的控件。想了解詳細的新類模式,請查看此頁

 

根據下面的步驟轉換你的當前類

 

1)  在確認變換前,一定要工程編譯沒有任何錯誤

2)  在你的項目瀏覽器點右鍵,選擇“更新WEB應用程序”,這樣會讓你的.aspx頁面和.ascx控件頁的後置代碼自動更新爲Partial模式,並生成相應的 .Designer.vb代碼。



接下來,你要重新編譯項目,這樣不會出現錯誤(我所遇到的錯誤情況大多是,你在代碼後置類裏修改了控件申明,在更新嚮導中會錯誤地處理它們)。如果你有這樣的錯誤,根據錯誤信息,查找相關的頁面,查看代碼,更改錯誤。

 

注意:還有一種更高級的選擇,就是一個頁面一個頁面的更新。只需要要選擇你想更新的頁面,右鍵à選擇“更新應用程序”項。這樣你可以更細緻地觀察更新過程。

 

當你新增頁面時,它會自動默認選用Partial代碼後置模板。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章