VS2003 WEB应用程序向VS2005的移植

下面的向导将向你展示,如何快速简便地把 VS2003 网络应用程序移植到 VS2005 平台。请详细阅读第一至第六条指引,目的是让你了解 VS2005 的网络应用程序的运行模式,因为这和以前 BEAT1 (和最终版的 VS2005 存在一定的差异,某些功能在 BEAT 版里不支持) VS2003 的运行模式存在着差异。
 
利用 VS2005 WEB 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 server2003 IIS6 ,还应当注意不要把它放在 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 10 PARTIAL 类的转化
 
当你完成上述步骤时,你的内联类和其它类将都不会被修改。它们将像在 VS2003 里一样。这样可以让移植变得简单。你也可以随意选择你的代码格式,这样需要你手工的去更新你的代码后置类。
 
当然,你也可以利用在 VS2005 中的新类模式 Partial 。这样让你的代码看着更简捷,更有逻辑性。这样就把当前的代码后置文件变换成了两个分别的文件:一个是代码和事件处理,另一个是为页面中申明的控件。想了解详细的新类模式,请 查看此页
 
根据下面的步骤转换你的当前类
 
1)  在确认变换前,一定要工程编译没有任何错误
2)  在你的项目浏览器点右键,选择“更新 WEB 应用程序”,这样会让你的 .aspx 页面和 .ascx 控件页的后置代码自动更新为 Partial 模式,并生成相应的 .Designer.vb 代码。



接下来,你要重新编译项目,这样不会出现错误(我所遇到的错误情况大多是,你在代码后置类里修改了控件申明,在更新向导中会错误地处理它们)。如果你有这样的错误,根据错误信息,查找相关的页面,查看代码,更改错误。
 
注意:还有一种更高级的选择,就是一个页面一个页面的更新。只需要要选择你想更新的页面,右键 à 选择“更新应用程序”项。这样你可以更细致地观察更新过程。
 
当你新增页面时,它会自动默认选用 Partial 代码后置模板。

你可能感兴趣的:(Web应用)