站内搜索:
网站首页化境产品软件资讯手机开发应用开发手机软件下载源代码下载编程工具开发资料博客
方式:
关键字:
 
  相关内容
  · 有关 Visual Web Developer 转换的疑难解答
 
当前位置: 化境编程网 >> .NET技术
有关 Visual Web Developer 转换的疑难解答
[时间: 2006-5-24 15:49:26 作者:microsoft ]

来源: www.microsoft.com


当使用 Microsoft Visual Web Developer 打开在 Microsoft Visual Studio .NET 的较早版本中创建的 Web 应用程序项目时,Visual Web Developer 会自动将 Web 应用程序转换为 ASP.NET 2.0 版中使用的格式。

Note注意

有关转换过程的详细信息,请参见 Visual Studio .NET Web 项目转换。

一些情况下,Web 应用程序在转换后将会有不同的行为。本主题描述最常见的这些情况并建议解决方案。有关迁移疑难解答的更多信息,您还可以参考位于“ASP.NET Development Center for Migration”(用于迁移的 ASP.NET 开发中心)的迁移信息。

本主题描述下列转换问题:

  • Controls Render Different Markup After Conversion

  • Markup Validation Produces Errors

  • Page Events Are Raised Twice After Conversion

  • Ambiguous Classes Reported During Compilation

  • Errors Related to Changes in the Code-Behind Page Model

  • Parsing Errors

  • Excluded Files No Longer Excluded

  • Partially Converted Solutions for Mixed Project Types

  • Opening a Web-Based Site as a File-System Site

  • Client-side IDs Get Deleted From the Code-Behind File

  • Circular Reference Error

转换后控件呈现不同的标记

在 ASP.NET 2.0 中,除非浏览器被标识为不支持 XHTML 功能,否则默认情况下,Page 类和 ASP.NET Web 服务器控件会呈现与 XHTML 1.0 Transitional 标准兼容的标记。转换向导会自动将 xhtmlConformance 元素的 mode 属性设置为 Legacy。与 ASP.NET 较早版本中的元素呈现相比,转换后的元素呈现稍有不同。大多数情况下,呈现中的差异对应用程序的功能没有影响。但是,如果使用的客户端脚本依赖于特定的标记或属性,则应用程序可能会不按之前的方式工作。

有关更多信息,请参见 ASP.NET 和 XHTML。

标记验证产生错误

迁移后,默认的标记验证架构被设置为 Internet Explorer 6.0。这意味着编辑器会将页面中的标记与以下架构进行比较:即定义 Microsoft Internet Explorer 6.0 将哪些内容视为有效的 HTML 的架构。采取此步骤可使向 Visual Web Developer 的转换更加容易。修改您的标记是一种良好的做法,以便您的应用程序页可以使用 XHTML 1.0 Transitional 验证架构进行验证。

有关如何更改验证架构的详细信息,请参见如何:为 Visual Web Developer 中的 HTML 编辑选择验证架构。

转换后引发页事件两次

转换过程会移除 @ Page 指令的 AutoEventWireup 属性。此属性的默认值为 true,这意味着页面会自动引发名称为 Page_event 的事件。如果一个页面已将 AutoEventWireup 属性显式设置为 false,则在转换后,页面上的事件将会被自动引发。如果该页面包括另外一个引发事件的显式方式(例如 Visual Basic 中的 Handles 关键字),则事件可能被引发两次。若要解决这一问题,请将 AutoEventWireup="false" 添加至 @ Page 指令。

编译过程中报告不明确类

在转换项目后,编译器可能将报告某个类是不明确的,这意味着该类从多个命名空间导入。例如,如果转换后的项目创建 Cache 类的实例,则编译器报告该类同时存在于 System.NetSystem.Web.Caching 命名空间中。

在类似这样的情况下,.NET Framework 2.0 版包含了一个新类,该类与某个现有类同名。若要更正此问题,请在代码中找到对该类的所有引用,并在类名称前预置命名空间的名称,以创建完全限定引用。

与代码隐藏页模型中的更改相关的错误

如果项目具有访问代码隐藏类中类的受保护成员的 .aspx 页,则在转换此类项目时可能会生成异常。这是由 .NET Framework 2.0 的代码隐藏模型中的更改引起的。在 .NET Framework 的早期版本中,页是代码隐藏类的派生类。但是在 ASP.NET 2.0 中,代码隐藏类定义分部类,这些类在页生成期间与 .aspx 页一起使用,以创建已编译的结果页。有关更多信息,请参见 ASP.NET 网页模型中的新增功能。

可能遇到此转换问题的一种常见情况是,应用程序在基类代码隐藏类中定义共享布局组件。您可以通过使用用户控件或母版页,或使用 @ Page 指令的 CodeFileBaseClass 属性,获得同样的共享布局功能。有关开发用户控件的更多信息,请参见 ASP.NET 用户控件概述。有关使用母版页的更多信息,请参见 ASP.NET 母版页概述。

分析错误

转换向导会就无法分析的 .aspx 文件报告分析错误。分析问题的原因可分为以下几类:

  • 运行转换向导之前未能正确设置 .aspx 页的格式。

  • 未找到 @ Page 指令的 CodeBehindSrc 属性。

  • 未找到 .aspx 页中引用的代码隐藏文件。

  • .aspx 文件在项目文件(例如 .csproj 或 .vbproj)中列出,但未在项目目录中列出。如果该文件不是项目的一部分,则可以忽略此错误。

已排除的文件不再排除

在 Visual Studio 的早期版本中,您可以选择在 Web 项目中包含或排除文件。此外,通过将某个文件的生成操作设置为 None,可以从项目生成中排除该文件。迁移向导以不同的方式处理这两种情况。迁移向导会转换 Web 项目中未标记为已排除的文件。迁移向导不会转换不属于项目生成的部分的文件,即不会转换那些已配置为将其生成操作设置为 None 的文件。

完成转换过程后,可以删除任何以前排除的文件或者用 Visual Studio 中未使用的扩展名重新命名这些文件,例如 .exclude 扩展名。如果 Web 项目内的一个项目中的文件未被转换,请检查以确保其生成操作未设置为 None

已将其关联的生成操作设置为 None 的文件会在转换报告中生成错误信息。有关转换报告的更多信息,请参见迁移转换报告格式。

混合项目类型的部分已转换解决方案

在 Microsoft Visual Studio 2005 和早期版本中,解决方案可以同时由 Web 项目和客户端项目(例如类库或 Windows 应用程序)组成。如果您正使用 Microsoft Visual Studio 2005 的速成版,则只有与该速成版有关的解决方案部分可以转换。例如,如果在 Visual Web Developer 2005 速成版 中使用转换向导,则不管解决方案包含了哪些其他项目类型,只能转换您打开的解决方案的 Web 项目。生成的已转换解决方案只能部分转换。若要完全转换包含混合项目类型的解决方案,请使用 Visual Web Developer 2005、Visual Studio 2005 或 Visual Studio 2005 Team System。

将基于 Web 的站点作为基于文件的站点打开

若要打开在早期版本的 Visual Studio 中创建的网站,建议方法是使用 Visual Web Developer 2005 中的“打开网站”菜单选项。随后可以选择将该站点作为基于文件的站点、本地 Microsoft Internet 信息服务 (IIS) 站点、文件传输协议 (FTP) 部署的站点或远程站点来打开。将基于 Web 的站点作为基于文件的站点打开会导致 IIS 元数据信息丢失。具体而言,标记为虚拟目录的子文件夹的有关信息将不会保留下来。当将基于 Web 的站点转换为基于文件的站点时,转换报告将报告一个警告。

建议您关闭该网站,通过使用“打开网站”命令并选择“本地 IIS”选项卡重新打开该网站。有关如何使用迁移向导的更多信息,请参见如何:将 Visual Studio .NET 项目转换为 Visual Studio 2005。有关转换报告的更多信息,请参见迁移转换报告格式。

客户端 ID 从代码隐藏文件中被删除

如果您的标记所使用的客户端 ID 属性(例如在 HTML div 元素中)与代码隐藏页中声明的成员变量具有相同名称,则在转换过程中将移除该标记中的 ID 标记。

若要解决此问题,请在转换之前检查您的标记和代码,并查找客户端 ID 属性和成员变量之间的名称冲突,然后进行更改以使名称各不相同。

循环引用错误

转换过程将 @ Reference 指令添加到引用其他页或用户控件的代码隐藏页。有时这可能会创建循环引用。若要帮助进行故障排除,可以将 compilation 元素的 batch 属性设置为 False。默认的 batch 属性值为 True。将批处理设置为 False 可能消除循环引用问题。从长远角度看,您可以重新设计这些页或用户控件以使用存储在 App_Code 文件夹中的类中定义的抽象基类,并将 batch 属性重新设置为 True

--- 文章结束 ---

 
| 关于我们 | 联系方法 | 网络广告 | 解决方案 | 产品服务 |

©Copyright by 中晟科技 2003 - 2006