自 Visual Studio .NET 的 Web 项目转换
更新:2007 年 11 月
Microsoft Visual Studio 2005 管理网站项目和文件的方式不同于 Visual Studio .NET 2002 和 Visual Studio .NET 2003(在此主题的下文中统称为 Visual Studio .NET)。因此,当要用 Visual Studio 2005 处理在 Visual Studio .NET 中创建的项目时,项目将被转换为 Web 应用程序项目。在 Visual Studio 2005 中打开 Visual Studio .NET 项目时,转换过程将自动发生;转换向导将转换 Web 应用程序,并最大程度减少完成转换所需的手动编辑量。本主题将描述转换过程,并指出在 Visual Studio .NET 文件中所做的相应更改。有关 Web 应用程序项目的更多信息,请参见 Web 应用程序项目概述。
转换过程的总体目标是使您能够在 Visual Studio 2005 中打开 Visual Studio .NET 项目,自动转换项目,然后运行项目,且不导致功能上的更改。转换过程是单向的 — 在将一个项目转换至 Visual Studio 2005 后,不能在 Visual Studio .NET 中使用该项目。虽然 Visual Studio 2005 会对项目中的文件做出更改,但是可以制作原始文件的备份副本。在 Visual Studio .NET 中仍然可以将 Visual Studio 2005 文件作为独立文件打开(但不具有如 IntelliSense 的某些功能),但是总体项目已经改变。如果需要,可以从备份文件中恢复 Visual Studio 项目。
安全说明: |
---|
在将现有项目转换至 Visual Studio 2005 前,请检查所有的现有文件,特别是在不止您一个人修改项目的情况下。查找不熟悉的文件。这有助于防止将恶意代码导入 Visual Studio。通常,建议您以典型用户的身份运行 Visual Studio 2005,除非您需要执行管理任务,否则不要以管理员身份运行。 |
本主题包括有关将 Web 项目转换至 Visual Studio 2005 的下面一些方面的信息:
Visual Studio 2005 转换过程
解决方案和项目
项目设置的转换
转换特定配置
数据组件
代码模块
Web 服务
转换和源代码管理
Visual Studio 2005 转换过程
下面的列表简要介绍从 Visual Studio .NET 到 Visual Studio 2005 的基本 Web 项目转换过程:
在 Visual Studio 2005 中,打开现有 Visual Studio .NET 网站。可以打开以下任一文件和目录:
解决方案 (.sln) 文件
项目(.vbproj、.csproj 或 .vjp)文件
网站的根目录
如果发现项目文件,Visual Studio 2005 将调用转换向导以转换 Web 项目。
说明: Web 项目在 Visual Studio 2005 中不再需要项目文件;位于 Web 项目文件夹中的所有文件均被视为 Web 项目的一部分。
有关转换向导中的步骤的详细信息,请参见 如何:将 Visual Studio .NET 项目转换为 Visual Studio 2005。
Visual Studio 2005 将 Web 应用程序从使用 ASP.NET 1.x 版转换至使用 ASP.NET 2.0 版。例如,ASP.NET 网页和用户控件中的 CodeBehind 属性会更改为新的 CodeFile 属性。如果修改了文件,则不保留原始文件权限 — 新的文件将具有授予用户的读/写权限。有关对文件所做更改的详细信息,请参见 Web 解决方案和项目文件转换。
独立的类文件会移至 App_Code 目录。
其他类型的文件不做任何处理。这包括图形、HTML 文件等。此外,迁移过程会忽略应用程序范围外的文件。这有助于防止恶意用户通过在项目文件中使用相对路径来访问应用程序范围外的文件。
将创建一个名为 ConversionReport.txt 的报告,并将该报告存储在转换后 Web 项目的根目录下。此报告文件列出对 Web 项目所做的所有更改,并可能包含转换过程中的信息性注释、警告及发现的错误。如果在转换向导中选择该选项以在完成向导后显示转换日志,则会在 Visual Studio 2005 中看到转换报告。有关此报告格式的更多信息,请参见迁移转换报告格式。
说明: |
---|
如果项目使用源代码管理,则在将 Web 项目文件转换至 Visual Studio 2005 后,这些文件将不受源代码管理。 |
解决方案和项目
如果在 Visual Studio 2005 中打开一个解决方案文件,则 Visual Studio 会检查该 .sln 文件的内容,以确定该文件包含的项目类型。Visual Web Developer 将只转换 Web 应用程序(网页和 Web 服务)。如果打开一个解决方案文件,该文件包含其他类型的项目(如 Windows 窗体项目或控制台应用程序),则将只打开 Web 项目并对其进行转换。
如果打开一个项目文件,Visual Studio 2005 会转换该项目引用的文件。不会试图转换不属于项目、但是与项目文件处在相同目录的文件。这可能会导致生成错误。例如,如果有称为 Page1.aspx 的文件和称为 Page1.aspx.cs 的代码隐藏文件,此代码隐藏文件在项目文件夹中,但没有包括在项目文件中,则转换向导将不转换任何文件。在编译时将得到生成错误,因为 Page1.aspx 和 Page1.aspx.cs 文件都将被视为转换后的 Web 应用程序的一部分。
如果项目包含带有 Visual Studio 2005 保留名称的目录(例如 App_Data 或 App_GlobalResources),则 Visual Studio 2005 将“_old”追加至现有目录名(例如 App_Data_old)。若要解决可能导致的任何断开的引用,必须手动更改代码以引用新的目录,或者将代码移至保留目录(如 App_Data 或 App_GlobalResources)中。有关更多信息,请参见 ASP.NET 网站中的共享代码文件夹。
项目设置的转换
因为 Visual Studio 2005 不在项目文件中维护设置,所以 Visual Studio .NET 项目的设置要么转换为 Web.config 文件,要么在这些在 Visual Studio .NET 中适用的设置在 Visual Studio 2005 中不适用时,不转换这些设置。
有关详细信息,请参见 Web 项目设置转换。
转换特定配置
如果源项目包含自定义生成配置,则转换过程会提示您选择要转换的配置。您的选择会确定在转换过程中使用哪些项目设置来以新的格式配置网站。
如果源项目只包含默认生成配置(发布和调试),则转换过程会使用调试配置中的设置。
数据组件
在 Visual Studio 2005 中,向网页添加数据访问的模型发生了更改。虽然 Visual Studio 2005 仍使用 ADO.NET 组件进行数据访问,但 Visual Studio 2005 页通过使用数据源控件来控制数据访问,这些数据源控件封装了数据连接对象、数据命令对象和数据集或数据读取器。有关详细信息,请参见 数据源控件概述 和 数据绑定表达式概述。
在 Visual Studio 2005 中,仍然支持使用数据连接、数据命令和数据集的显式实例的 Visual Studio .NET 模型。当 Visual Studio 2005 对涉及数据访问的页或文件进行转换时,现有的数据对象经转换并不做任何更改,这些对象在 Visual Studio 2005 中可继续工作,就如在 Visual Studio .NET 中工作一样。但是,在 Visual Studio 2005 网页设计器(“设计”视图)中将无法使用这些数据组件,因为设计器不支持这些对象。它们可以在源视图中继续使用。
数据集
在转换过程中,Visual Studio 2005 会转换类型化数据集的架构(.xsd 文件),并将它存储在 App_Code 目录中。不会转换表示数据集类的 .vb 或 .cs 文件(由 Visual Studio 生成),因为网站能够自动引用 .xsd 文件。
代码模块
独立代码模块(.vb 和 cs 文件)按原样移至 App_Code 目录。(这不适用于与网页或其他 ASP.NET 文件相关联的 .vb 和 .cs 文件。) 标记为 Friend 或 Internal 的任何成员声明将更改为 Public。
对 .vb 文件,转换过程添加 Namespace 语句,该语句指向 Web 项目的根目录。此外,转换过程将尚未由 ASP.NET 自动导入的任何类添加到编译器元素的 compilerOptions 属性中。
Web 服务
Web 服务转换为与在 Visual Studio .NET 中基本相同的格式。Web 服务的类文件(.asmx.vb 或 .asmx.cs 文件)将移至 App_Code 目录。标记为 Friend 或 Internal 的任何成员将更改为 Public。.asmx 文件中的 @ Page 指令的 CodeBehind 属性会更新为指向代码的新位置。
在 Visual Basic Web 服务中,将 Namespace 语句添加至由 Web 项目中的根命名空间定义的类文件。转换过程还将 Imports 语句添加至 Visual Basic 文件,以定义所有尚未由 ASP.NET 在默认情况下导入的 Web 服务导入。
转换和源代码管理
源代码登记不转换。转换后,网站中的文件不再接受源代码管理。
请参见
任务
如何:将 Visual Studio .NET 项目转换为 Visual Studio 2005
演练:将 Visual Studio .NET 2003 Web 项目转换为 Visual Studio Web 应用程序项目