Visual Studio 2005 中的改进

Microsoft

Visual Studio 2005 为 Web 应用程序开发人员提供了一长串 Web 项目的改进和增强功能。

Visual Studio 2005 为 Web 应用程序开发人员提供了一长串 Web 项目的改进和增强功能。 与 Visual Studio .NET 2002 和 2003 一样强大,Web 项目的处理方式存在许多投诉。 Visual Studio 2005 添加了大量新功能来解决这些投诉。 对于喜欢使用 Visual Studio .NET 2003 处理 Web 应用程序编译方式的用户,请参阅 Web 应用程序项目

在本模块中,详细介绍了 Web 项目创建、管理和开发的改进。 在后面的模块中,充分介绍了生成和部署 Web 项目方面的改进。

FrontPage 服务器扩展

Visual Studio .NET 2002 和 2003 需要此框上的 FrontPage 服务器扩展才能创建或生成 Web 项目。 开发人员确实可以选择两种不同的访问模式 (FrontPage Server Extensions 或文件访问模式) ,这两种模式都使用 FrontPage Server Extensions 来执行诸如在 IIS 中设置应用程序根等任务。

Visual Studio 2005 消除了对本地项目的 FrontPage 服务器扩展的依赖。 Visual Studio 2005 现在直接访问 IIS 元数据库,而不是使用 FrontPage 服务器扩展。 Visual Studio 2005 还添加了对 FTP 的支持,允许远程项目访问,而无需 FrontPage 服务器扩展。

对于想要在其项目中使用 FrontPage 服务器扩展的开发人员,该选项仍然可用。 但是,根据 ASP.NET 开发人员社区的强烈反馈,这不是一项要求。

注意

远程项目创建、打开等操作仍然需要 FrontPage 服务器扩展。

ASP.NET Development Server 概述

Visual Studio 2005 附带名为 ASP.NET Development Server 的新 Web 服务器。 (此 Web 服务器以前称为 Cassini.)

ASP.NET Development Server 有几个优点。

  • 现在,非管理员可以针对 Web 服务器进行开发和调试。
  • ASP.NET 开发服务器将虚拟目录动态映射到文件系统中的任何位置,从而允许灵活的项目位置。
  • 已在使用 IIS 的 Windows XP Professional 用户现在可以创建新的 Web 应用程序,这些应用程序不会影响 IIS 中默认网站的文件或文件夹结构。

无需特殊配置即可利用 ASP.NET Development Server。 调试或浏览文件系统上托管的 Web 项目时,Visual Studio 2005 将自动在随机端口上启动 ASP.NET Development Server 的实例,以便为请求提供服务。

本模块稍后将在 ASP.NET Development Server 上介绍详细信息。

改进了文件管理

在 Visual Studio 2002 和 2003 中,项目文件 (.vbproj for VB.NET 和 .csproj for C# ) 存储 Web 应用程序中所有文件的信息。 解决方案资源管理器显示基于项目文件中的文件信息。 因此,在使用外部编辑器的情况下,解决方案资源管理器通常会显示不准确的信息。 Visual Studio 2002 和 2003 通常会覆盖文件更改或不显示最新版本的文件。

Visual Studio 2005 会弃用项目文件。 相反,它会直接从磁盘读取文件和文件夹信息,从而准确显示项目中的文件。 由于 Visual Studio 2002 和 2003 中的 References 文件夹不表示 Web 应用程序中的实际文件夹,因此 Visual Studio 2005 还会从解决方案资源管理器中删除 References 文件夹。 若要在 Visual Studio 2005 中访问项目的引用,应使用项目的“属性”页。

创建 Web 项目

Web 开发人员在 Visual Studio 2005 中提供了许多可用于创建项目的新选项。 现在可以在文件系统中的任何位置创建网站,然后使用新的 ASP.NET Development Server 进行调试或浏览。 开发人员还可以使用 FTP 创建新网站。

单击此处可观看有关在 Visual Studio 2005 中创建 Web 项目的视频演练。

打开Full-Screen视频

文件系统项目

如视频演练中所示,可以选择在本地计算机上或通过文件共享在远程位置上的文件系统上创建网站。 使用 ASP.NET Development Server 浏览和调试在文件系统上创建的网站。

注意

ASP.NET 开发服务器可能会给客户带来一些困惑。 如果在 IISs 目录结构 ((即 c:/inetpub/wwwroot) )的文件系统上创建了 Web 项目,则从 Visual Studio 2005 中启动时,仍可通过 ASP.NET Development Server 浏览网站。 因此,任何 IIS 配置 (即) 身份验证方法都不适用。

默认 Web 项目还通过仅包含 Default.aspx 页面、default.cs 文件和 App/_Data 文件夹来消除大量开销。 将根据需要添加web.config和特殊文件夹 (即 app/_code) 。 Web 项目仅包含所需的文件和文件夹。

HTTP 项目

HTTP 项目可以是在本地 IIS 网站或远程网站上创建的项目。 默认项目位置为 http://localhost。 如果单击“浏览”按钮,则有两个 HTTP 选项:本地 IIS 和远程站点。 这两个选项main区别在于网站信息显示在“选择位置”对话框中的方法,以及文件复制到 Web 服务器的方式。

“本地 IIS”选项从本地计算机上的元数据库读取站点信息,并使用文件系统复制文件。 “远程站点”选项使用 FrontPage 服务器扩展,并使用 HTTP 和 FrontPage 服务器扩展 RPC 调用复制站点信息和文件。

注意

vs###/_tmp.htm 文件和 get/_aspx/_ver.aspx 不再用于确定版本信息。

默认 HTTP 选项为本地 IIS。 此选项读取 IIS 元数据库,以确定哪些站点可用以及要在其中创建内容的位置。 可以通过在树视图中选择其他文件夹或虚拟目录来选择它。 还可以创建新的虚拟目录、将文件夹标记为应用程序,以及从此对话框中删除现有虚拟目录。

“选择位置”对话框

图 1:“选择位置”对话框

与早期版本的 Visual Studio 不同,如果检查“使用安全套接字层”复选框,并且 SSL 证书与正在浏览的 URL 不匹配,则会出现“安全警报”对话框,询问是否要继续。 使用 Visual Studio .NET 2003 时,如果证书不是匹配的证书,则创建项目将失败。

有关 SSL 证书的安全警报

图 2:有关 SSL 证书的安全警报

有关主机标头的注释

如果要在绑定到特定 IP 的网站上创建 Web 应用程序,则需要确保配置主机标头。 否则,Visual Studio 将在 创建站点, http://localhost但在 IDE 中浏览或调试站点时,IP 地址将无法正确解析。

如果选择“远程站点”选项,对话框将更改为允许输入新网站的目标 URL。 此 URL 必须位于启用了 FrontPage 服务器扩展的服务器上。 如果要使用 FrontPage 服务器扩展处理本地 Web 服务器,可以使用“远程站点”选项并指定本地 URL。

在远程服务器上创建网站

图 3:在远程服务器上创建网站

通过 SSL 在远程站点上创建应用程序时,如果 SSL 证书不匹配,则确认对话框与使用本地 IIS 选项时显示的对话框略有不同。

远程站点安全警报

图 4:远程站点安全警报

FTP

Visual Studio 2005 引入了通过 FTP 创建网站的选项。 使用此选项时,IDE 会在 users 临时文件夹中本地创建文件,然后使用 FTP 将文件移动到 FTP 位置。

注意

临时文件夹位置为 c:/Documents and Settings/<User>/Local Settings/Temp/VWDWebCache/<Server>/_<application name>

使用 FTP 选项时,将显示“选择位置”对话框。 在此对话框中输入所需的 FTP 连接信息,如下所示。

FTP 的“选择位置”对话框

图 5:FTP 的“选择位置”对话框

实验室:设置 FTP 站点并创建项目

以下步骤配置 FTP 站点,以便用户具有只能通过 FTP 上传到的位置。

安装 FTP 服务

  1. 打开“添加删除程序”,选择“添加/删除 Windows 组件”
  2. 在 Windows 2003) 上选择“Internet Information Services (应用程序服务器”,然后单击“ 详细信息”。
  3. 检查 FTP) 服务 (文件传输协议 ,然后单击“ 确定”。
  4. 单击“ 下一步 ”安装 FTP 服务。

为内容创建新文件夹

  1. 在 Windows 资源管理器中,在 c:/inetpub/wwwroot 中创建名为 User1 的新文件夹。

配置文件夹和文件夹权限。

  1. 从管理工具打开 Internet Information Services 管理单元。 现在,计算机名称节点下将有一个 FTP 站点文件夹。
  2. 展开 “FTP 站点”。
  3. 右键单击 “默认 FTP 站点”,依次选择“ 新建”、“ 虚拟目录”和“ 下一步”。
  4. 输入 User1 作为虚拟目录名称,然后单击“ 下一步”。
  5. 为路径输入 c:/inetpub/wwwroot/User1 ,然后单击“ 下一步”。
  6. 单击“ 下一步 ”,然后单击“ 完成 ”以完成向导。
  7. 右键单击“默认 FTP 站点”下的 User1 虚拟目录,然后选择 “属性”。
  8. 选中“ 写入 ”复选框,然后单击“ 确定 ”关闭对话框。
  9. 右键单击“ 默认 FTP 站点 ”,然后选择“ 属性”。
  10. 在“ 安全帐户 ”选项卡上,取消选中“ 允许匿名连接”。
  11. 在询问是否要继续的对话框中单击“ ”。
  12. 单击“确定”,关闭对话框。
  13. 展开“网站”节点下的“默认网站”。
  14. 右键单击 User1 目录,然后选择 “属性”
  15. “应用程序设置” 部分中,单击“ 创建 ”将文件夹标记为应用程序。
  16. 单击“确定”,关闭对话框。
  17. 关闭 Internet Information Services 管理单元。

创建 Web 项目

  1. 打开 Visual Studio 2005。
  2. 从“ 文件 ”菜单中,选择“ 新建网站”。
  3. “位置 ”下拉列表中,选择“ FTP”。
  4. 单击“浏览”。
  5. 在“服务器”文本框中输入 localhost
  6. 在“目录”文本框中输入 User1
  7. 单击 “打开” 。 FTP 位置将输入到“新建网站”对话框中。
  8. 单击 “确定”
  9. 在“FTP 登录”对话框中取消选中“ 匿名 登录”,输入凭据,然后单击“ 确定”。
  10. 项目的 URL 是什么? (项目的 URL 将显示在 解决方案资源管理器.)
  11. 从“ 生成 ”菜单中,选择“ 生成网站” 或“ 生成解决方案”。
  12. 在解决方案资源管理器中右键单击 Default.aspx,然后选择“在浏览器中查看”。
  13. 在“网站 URL 必需”对话框中,输入 http://localhost/user1 URL,然后单击“ 确定”。

注意

如果收到错误,指示无法加载类型 /_Default,请确保在网站上运行 ASP.NET 2.0,而不是早期版本。 可以从 Internet Information Services 中的“ASP.NET”选项卡执行此操作。

打开 Web 项目

打开 Web 项目类似于创建项目。 以下部分标注了在 IDE 中工作时需要注意的区域。 它还介绍如何使用 HTTP 和 FTP 处理 Web 项目。

若要打开 Web 项目,请从“文件”菜单中选择“打开网站”。 系统将提示你使用前面所述的相同“选择位置”对话框,并且有四个选项可供你使用:文件系统、本地 IIS、FTP 和远程站点。

文件系统

如本模块前面所述,Visual Studio 不再使用项目文件。 因此,如果选择从文件系统打开网站,则实际上可以选择所需的任何文件夹,即使所选文件夹最初不是在 Visual Studio 中创建为 Web 项目也是如此。 例如,可以选择以网站的形式打开“我的文档”文件夹,Visual Studio 将愉快地打开它并显示文件,如下所示。

我的文档作为网站打开

图 6:以网站身份打开的文档

由于 Visual Studio 仅在必要时创建其他文件和文件夹,因此不会将其他文件或文件夹添加到打开的位置。 此体系结构的一个副作用是,它会阻止你在文件系统上嵌套网站。 例如,请考虑以下目录结构。

C:/MyWebSite 中的 Web 项目

C:/MyWebSite/Nested 上的另一个 Web 项目

在 c:/MyWebSite 中打开网站时,嵌套文件夹将显示为该应用程序的子文件夹。

HTTP

通过 HTTP 打开网站时,将从 IIS 元数据库 (本地 IIS) 或使用 FrontPage 服务器扩展 (Remote Site 读取设置。) 如果存在嵌套的 Web 应用程序,则会显示这些设置以及标识为应用程序的图标。 如果你熟悉在 FrontPage 中使用 Web 应用程序,则 Visual Studio 2005 中的行为类似。

即使 Visual Studio 将显示嵌套在当前在 IDE 中打开的应用程序下方的应用程序的图标,它也不会允许你展开它们以查看其内容。 但是,可以双击它们将其打开。 执行此操作时,将显示一个对话框,提示打开 Web 应用程序 (并替换当前打开的解决方案) 或将 Web 应用程序添加到当前解决方案。

双击嵌套应用程序图标会显示此对话框

图 7:双击嵌套的应用程序图标会显示此对话框

FTP 站点

通过 FTP 打开站点时,文件将全部在本地复制到临时文件夹。 本地存储位置的完整路径显示在项目的“属性”窗格中,并使用以下格式创建。

C:/Documents and Settings/<User>/Local Settings/Temp/VWDWebCache/<Server>/_<application name>

使用 FTP 时,Visual Studio 需要指定项目的基 URL,以便可以按如下所示浏览它。 如果未指定基 URL,Visual Studio 将在你首次尝试浏览网站中的页面时要求你提供该 URL。

指定 FTP 站点的基 URL

图 8:指定 FTP 站点的基 URL

编译中的改进

在 Visual Studio 2005 中使用 Web 应用程序的速度明显快于以前的版本。 这在很大程度上是由于编译体系结构的更改造成的。

在 Visual Studio 2002 和 2003 中,Web 应用程序编译为驻留在 /bin 文件夹中的主程序集。 在 Visual Studio 2005 中,添加了 App/_Code 文件夹。 类和其他非 UI 代码将添加到 App/_Code 文件夹中。 当 Visual Studio 生成项目时,App/_Code 文件夹中的所有文件都会编译为单个 App/_Code.dll 文件。 此更改的结果是后续生成的速度比以前的版本快得多。

注意

MSBuild 命令行实用工具还可用于生成 ASP.NET Web 应用程序。 模块 9 将介绍该工具。

另一个编译增强功能是“生成”菜单上的新“生成页”选项。 此功能允许开发人员仅重新生成当前页 (,当然,以及依赖项) ,以便可以更快地编译更改。 由于 C# 不提供用于更新 IntelliSense 等的后台编译,因此它们将大大受益于此功能,因为它将允许 IntelliSense 通过只需重新生成单个页面即可快速更新。

通过项目的 Build 属性,可以配置在执行启动页之前发生的生成类型。 开发人员可以选择仅生成当前页,以便 Visual Studio 可以在代码更改后更快地开始调试应用程序。

生成页启动操作

图 9:生成页启动操作

Visual Studio 和 ASP.NET 体系结构的另一个重大增强功能是在编辑并继续方面。 在 Visual Studio 2005 中,开发人员可以开始调试项目并更改项目上的代码,而无需分离调试器。 事实上,你可以从字面上开始调试项目、添加新类、向该类添加代码、将代码添加到页面以创建该类的新实例并执行类的方法,所有这些操作都无需分离调试器。 执行新代码与刷新浏览器一样简单!

单击此处可查看 Visual Studio 2005 中编辑并继续功能的视频演练。

打开Full-Screen视频

ASP.NET 2.0 和 Visual Studio 2005 中强大的编辑并继续功能是由于 ASP.NET 应用程序的体系结构发生了更改。 在 ASP.NET 1.x 中,在 Visual Studio 2002/2003 中创建的应用程序已编译为存储在 /bin 文件夹中的主程序集。 所有类、页面等。应用程序的 已编译到该 DLL 中。 然后在运行时,ASP.NET 将编译页面中的所有控件、标记和 ASP.NET 代码,并将这些 DLL 复制到 ASP.NET 临时文件夹中。

在使用 ASP.NET 2.0 的 Visual Studio 2005 中,上面概述的两个编译模型 (一个用于 Visual Studio,一个用于运行时 ASP.NET,) 已合并为一个通用编译模型。 这意味着所有编译问题现在都在开发阶段而不是运行时捕获。 它还允许设计器和 IntelliSense 支持用户控件和母版页等功能。

单击此处可查看设计器对用户控件支持的视频演练。

打开Full-Screen视频

注意

从页面中删除用户控件时, @Register 指令将保留在标记中,应手动删除,以避免从网站中删除用户控件时出现分析程序错误。

Visual Studio 编译模型的另一个改进是发布网站功能。 由于“发布”功能预编译网站,因此开发人员可以享受无需按需编译任何内容的额外性能。 它还会将 App/_Code 文件夹中的所有源代码预编译为 DLL,以便无需部署源代码。

“发布网站”对话框

图 10:“发布网站”对话框

注意

aspnet/_compile.exe 实用工具还可用于预编译 ASP.NET Web 应用程序。 该工具将在模块 9 中介绍。

发布网站时,预编译的文件将存储在“临时 ASP.NET 文件”文件夹中,如下所示。 扩展名为 .compiled 的文件是定义特定 DLL 依赖项的 XML 文件。 任何 Web 窗体或用户控件都编译为以 App/Web/ 开头的随机 DLL。

如果选中“ 允许此预编译网站可更新 ”复选框,则 Web 窗体和用户控件中的标记不会预编译为 DLL,这样就可以在部署后进行更改。 如果希望锁定标记,以便不允许更改已部署的内容,请取消选中此框。

使用 固定命名和单页程序集 复选框可禁用批量编译,以便将每个页面编译为固定命名的程序集。 取消选中此框可充分利用批量编译。

通过 “对预编译程序集启用强命名 ”复选框,可以对预编译程序集进行强名称。

注意

在 ASP.NET 1.x 中,强名称程序集必须安装到全局程序集缓存 (GAC) 。 在 ASP.NET 2.0 中,无需将强名称程序集安装到 GAC 中。

ASP.NET 应用程序预编译文件

图 11:ASP.NET 应用程序预编译的文件

注意

在上述应用程序中,没有web.config文件。 如果存在,则会在发布网站进程后 PrecompiledApp.config 调用它。

部署中的改进

与 Visual Studio 2002 和 2003 一样,Visual Studio 2005 提供复制项目功能。 但是,此功能已在 Visual Studio 2005 中得到加强,现在称为“复制网站”。

“复制网站”对话框拆分为左框架和右框架。 左框架称为“源网站”,右框架称为“远程网站”。 可能会让一些开发人员感到困惑的一件事是,在正确的框架中显示的网站不一定是远程站点。 它可以是本地文件系统上的站点,也可以是 IIS 的本地实例上的站点。 此外,左侧框架中显示的网站不一定是源网站,因为对话框允许你从远程网站 发布到 源网站。

如果要将项目复制到远程网站,该站点上必须安装 FrontPage 服务器扩展。 如果没有,则需要使用 FTP 进行连接。 另一方面,如果要将项目复制到本地 IIS 实例,则不需要 FrontPage 服务器扩展。

注意

如果尝试在本地 IIS 实例上创建新网站,并且安装了 FrontPage 2002 服务器扩展,则会收到一条错误消息,指出 SharePoint 服务器上不支持创建网站。 在这种情况下,可以选择安装 FrontPage 2000 服务器扩展或删除 FrontPage 服务器扩展。

单击此处获取复制网站功能的视频演练。

Visual Studio 中“复制网站”功能的视频演练的屏幕截图。

打开Full-Screen视频

调试中的改进

Visual Studio 2005 中的调试有四项关键改进。

  • 以非管理员身份进行本地调试是现成的。
  • 编译元素的 Debug 属性现在默认为 false。
  • 远程调试设置和配置比以前更容易。
  • 现在可以调试通过 FTP 位置打开的网站。

以非管理员身份调试

添加 ASP.NET 开发服务器使非管理员能够立即轻松调试 ASP.NET 应用程序。 调试在本地文件系统上运行的 ASP.NET 应用程序时,Visual Studio 会在登录用户的上下文中启动 ASP.NET 开发服务器。 然后,该用户无需任何其他配置即可调试该应用程序。

默认情况下,调试为 False

在 ASP.NET 1.x 中,默认情况下,web.config 文件的编译元素中的 debug 属性设置为 true。 始终建议开发人员在将应用程序部署到生产环境之前将此属性设置为 false ,但由于大多数开发人员并不完全了解将调试属性设置为 true 的后果,因此他们只是按原样保留它。

将 debug 属性设置为 true 的最严重问题是禁用 ASP。NET 批量编译模型。 因此,每个页面都编译为单独的 DLL。 如果 Web 应用程序由数千个页面组成, () 的任何方式都不是闻所未闻的,这意味着该应用程序将创建数千个小 DLL。 虽然这些 DLL 较小,但它们不会加载到内存中的任何特定位置。 因此,它们会导致系统内存碎片,并可能导致 OutOfMemoryException 出现。

在 ASP.NET 2.0 中,调试属性默认设置为 false。 如前所述,开发人员在 Visual Studio 2005 中调试 ASP.NET 应用程序时,系统会提示他们添加启用调试的web.config文件。 这样做会产生与 ASP.NET 1.x 中相同的缺点,但现在开发人员被明确警告,在将应用程序移动到生产环境之前,属性应重置为 false。

远程调试设置和配置

在 Visual Studio 2002/2003 中,远程调试依赖于计算机调试管理器 (mdm.exe) 和vs7jit.exe过程。 因此,对客户来说,排查远程调试问题通常是一个黑匣子,而对于 PSS 来说通常并不好。

Visual Studio 2005 消除了对mdm.exe和vs7jit.exe进程的依赖。 现在,它使用远程调试监视器服务 (msvsmon.exe.)

在 Visual Studio 2005 中远程调试的要求非常简单。 调试之前,需要在远程服务器上运行msvsmon.exe。 可以从 Visual Studio CD 安装远程调试监视器,也可以从共享运行 msvsmon.exe,而无需在 Web 服务器上安装任何内容。

运行 msvsmon.exe 时,它可能会抱怨端口被阻止进行远程调试。 幸运的是,可以轻松地在警告对话框中取消阻止端口,如下所示。

Windows 防火墙正在阻止远程调试的通知

图 12:Windows 防火墙正在阻止远程调试的通知

取消阻止调试所需的端口后,将看到远程调试监视器,如下所示。 在此界面中,可以轻松监视连接并更改调试权限。

远程调试监视器

图 13:远程调试监视器

还可以远程调试通过 FTP 打开的 Web 应用程序。 这些步骤与前面介绍的步骤相同。 但是,需要指定用于浏览 FTP 项目的基 URL,如本模块前面所述。

实验室 2

使用 Visual Studio 2005 进行远程调试

本实验室将引导你完成 Visual Studio 2005 的远程调试。

单击此处获取此实验室的视频演练。

Visual Studio 中远程调试的视频演练的屏幕截图。

打开Full-Screen视频

本实验室要求有两台计算机,一台运行 Visual Studio 2005,另一台运行 IIS 5 或更高版本。

  1. 打开 Visual Studio 2005 并在远程服务器上创建新网站。

注意

可以在远程 IIS 实例上或通过 FTP 创建网站。

  1. 在远程 Web 服务器上,使用 UNC 路径在开发计算机上找到msvsmon.exe并执行它。
    msvsmon.exe的默认位置为 //server/c$/Program Files/Microsoft Visual Studio 8/Common7/IDE/Remote Debugger/x86。
  2. 如果系统提示取消阻止远程调试的端口,请执行此操作。
  3. 在开发计算机上,打开 Default.aspx 的代码隐藏,并在 Page/_Load 方法中设置断点。
  4. 从开发计算机开始调试。

应按预期命中断点。

启动 ASP.NET 开发服务器

如前所述,Visual Studio 2005 附带名为 ASP.NET Development Server 的 Web 服务器。 (ASP.NET 开发服务器有时称为 Cassini.) 此 Web 服务器是浏览和调试文件系统上运行的 Web 应用程序的便捷方法。

ASP.NET 开发服务器是受限的 Web 服务器。 它不允许远程连接,它不允许来自除启动 Web 服务器的用户以外的任何用户的任何请求。 它也没有提供 ASP 页面的功能。 仅提供 ASP.NET 资源和 HTML 资源 (,包括图像、CSS 文件等) 。

可以通过命令行启动 ASP.NET 开发服务器,方法是运行位于 c:/Windows/Microsoft.NET/Framework/v2.0./////*的 WebDev.WebServer.exe 文件。 以下对话框显示可用的参数。

Visual Studio 对话框的屏幕截图,其中显示了用于从命令行启动 A S P dot net 开发服务器的参数。

图 14

注意

通过命令行显式启动时,不支持 ASP.NET 开发服务器。