Web 开发

面向 Web 开发人员的 Visual Studio 2010 SP1

Scott Hanselman

Visual Studio 2010 SP1 已于 3 月发布。此 Service Pack 解决了客户在合作伙伴反馈和内部测试期间所发现的问题。在发布 Visual Studio 2010 SP1 的同时,还推出了一些面向 Web 开发人员的新组件。本文将探讨 Visual Studio 2010 SP1 中的 Web 开发改进。大多数改进都是为了将 Visual Studio SP1 与 Microsoft Web 平台上新的产品及功能进行集成,这些新产品包括 IIS Express 7.5、SQL Server Compact Edition 4.0(为简洁起见,后面简称为 SQL Server CE)、新 Razor 语法和 Web 平台安装程序 (Web PI) 等等。其他改进包括对可以进行 bin 部署的依赖项(例如 ASP.NET MVC 3)的支持,以及 Visual Studio 2010 SP1 自身中的 HTML5 和 CSS3 支持。

本文假定您已安装 Visual Studio 2010 SP1。该产品可作为独立安装程序下载,也可以使用 Web PI 下载。有关该产品下载位置的详细信息可在 bit.ly/hnU6mm 中找到。

Web PI 是一种免费工具,使用它可以更轻松地获取 Microsoft Web 平台的最新组件。更多详细信息可在 bit.ly/a6dLu 中找到。

Visual Studio 2010 SP1 中新增的出色功能

IIS Express 7.5、SQL Server CE、Visual Studio Tools for SQL Server CE 和 Razor 版 ASP.NET MVC 3 是在 Visual Studio 2010 SP1 之后安装的单独组件。实际上,对 Visual Studio 2010 SP1 中这些功能的支持一直处于休眠状态,直到在计算机上安装这些功能。

可以使用各种方法下载和安装这些组件。有比较麻烦的方法,也有简单的方法。您可以 自行查找和下载每个独立组件。也许这适合 Visual Studio 2010 SP1 的企业或受控部署。您可以使用 Web PI 单独查找、下载和安装每个软件包,当您只需要特定的功能时,这会十分有用。我们稍后将讨论各个安装。不过,最简单的方法就是在 Web PI 中使用一个包含所有这些功能的“捆绑包”。我们冒昧为您创建了下面这个简短的 URL,它可以启动 Web PI,并自动为您选择获得一切 的适当选项:hnsl.mn/VS2010SP1Bundle

Web PI 知道您的计算机上安装了什么。如果您的计算机上几乎什么都未安装,也就是说未安装任何开发工具,那么这个链接将会自动安装免费的 Visual Studio Web Developer Express SP1 及所有新功能。不过,如果您已安装了任意版本的 Visual Studio,甚至已安装了 Visual Studio 2010 SP1 及其中一些 工具,那么 Web PI 将会自动获取更新到最新状态所需的最少功能。这就是“获得一切”链接。

在开始安装之前,应确保已关闭 Visual Studio 的所有实例(记得在任务管理器中检查 devenv.exe)。

您可能会发现打开的项目使用了未安装的新组件。如果您打开的现有 Web 项目使用了其中一些新功能,Visual Studio 2010 SP1 将会自动检测缺少的组件,并使用 Web PI 安装这些组件。

Web PI 集成

在此部分中,我们将介绍 Visual Studio 2010 SP1 如何自动检测 Web 项目所需的缺失 Web 组件,还将介绍 Web PI 工具栏。

“缺少组件”对话框这是此 Service Pack 中引入的一个新对话框。当您打开使用 IIS 7.5 Express、SQL Server CE 或 ASP.NET MVC Razor 语法的现有 Web 项目时,如果计算机上未安装其中任意组件,则会出现此对话框。该对话框用于使用 Web PI 下载和安装由该 Web 项目使用的缺失组件。

例如,图 1 显示了在未安装 SQL Server CE 的情况下打开使用 SQL Server CE 数据库的网站时,该对话框中所显示的内容。

A Warning About a Missing Component and an Offer to Fetch It

图 1 缺少组件的相关警告以及获取该组件的提示

此时,如果您单击“是”,Visual Studio 2010 SP1 将会尝试检测您的计算机上是否已安装 Web PI。如果未安装,则至少会在浏览器窗口中打开下载页面,供您获取 Web PI。

如果已安装 Web PI,则会启动 Web PI,其中选中了缺少的组件。它只会下载您所需的组件。别担心,这个工具很智能化。它不会下载 Visual Studio 2010 SP1,因为您已安装了这个产品!

图 2 说明了在“缺少组件”对话框上单击“是”或“否”时所发生的情况(橙色图表示需要用户操作;蓝色图表示 Visual Studio 2010 SP1 所执行的步骤)。

Steps Taken After You’re Presented with the Missing Component Dialog Box

图 2 显示“缺少组件”对话框后所执行的步骤

Web PI 工具栏。若要使用 Web PI 下载任何其他组件,还可以使用 Visual Studio 中新增的一个工具栏,其中包含一个“安装 Web 组件”按钮。

单击该按钮时,将会启动 Web PI;如果未安装 Web PI,将会带您进入下载页面。如果尚未显示该工具栏,选择“视图”|“工具栏”|“Web 平台安装程序”即可将其显示出来。“工具”菜单下也有“安装 Web 组件”选项。

IIS Express 7.5 支持

现在您已了解如何安装各种组件,下面我们来探讨一下 Visual Studio 中的 IIS Express 7.5 功能。

IIS Express 7.5 是专门针对开发人员进行了优化的 IIS 轻型版本。更多详细信息可在 bit.ly/cOfrt4 中找到。

IIS Express 7.5 是从与 IIS 7.5 相同的代码库构建的,因此它在开发框上为 Web 开发人员提供了 IIS 功能,例如 SSL、URL 重写和 MIME 类型,这与完整版产品 Web 服务器类似。

可以使用 Web PI (bit.ly/dfikKe) 或独立安装程序 (bit.ly/g5RMgc) 下载和安装 IIS Express 7.5。

也许,您有一个现有网站或项目使用了 Visual Web Development Server(旧称 Cassini 的小型 Web 服务器)。您可以在解决方案资源管理器中右击该 Web 项目,将该项目转换为使用 IIS Express 7.5(请参见图 3)。

Converting from Visual Web Development Server to IIS Express 7.5

图 3 从 Visual Web Development Server 转换为 IIS Express 7.5

Visual Studio 2010 SP1 会提示您进行确认,然后显示该 Web 项目已成功设置为使用 IIS Express 7.5。

不过,一次又一次地将项目设置为使用 IIS Express 7.5 十分麻烦。如果需要,您可以通过“项目和解决方案”|“Web 项目”下的“工具”|“选项”对话框,将 IIS Express 7.5 设为所有项目的默认 Web 服务器。选中“将 IIS Express 用于新的基于文件的网站和项目”选项(请参见图 4)。

Making IIS Express 7.5 Your Default Web Server

图 4 将 IIS Express 7.5 设为默认 Web 服务器

当然,您可以根据项目进行选择,甚至可以从 IIS Express 7.5 转换回 Visual Studio Web Development Server。这只需在解决方案资源管理器中右击项目并将其转换为使用 Visual Studio Web Development Server 即可。

IIS Express 7.5 与非管理员

要创建或打开现有 IIS 网站或 Web 项目,您需要以提升用户身份(管理模式)运行 Visual Studio 2010 SP1。对于没有这种身份的用户来说,这有些麻烦。也许这是受到 IT 部门的限制,也许您只想尽量避免以管理员身份运行程序。

幸运的是,您现在可以将 IIS Express 7.5 用作 Web 项目的 Web 服务器,而不需要在管理员帐户上下文中运行 Visual Studio 2010 SP1。安装后,任何用户都能以非管理员身份使用 Visual Studio 2010 SP1 和 IIS Express 7.5。

IIS Express 7.5 属性

IIS Express 7.5 提供了许多自定义属性,可从属性窗口为每个项目设置这些属性(在解决方案资源管理器中选择项目,然后按 F4 即可显示属性窗口)。图 5 显示了属性窗口。

The Project Properties Window

图 5 项目属性窗口

下面列出了 IIS Express 7.5 特定的属性:

  1. 匿名身份验证 — 启用/禁用匿名身份验证。匿名身份验证不向客户端浏览器提供用户名和密码质询,允许任何用户访问网站。默认情况下启用该属性。

  2. 托管管道模式(可以为集成型或经典型):

    集成型 — ApplicationPool 对象将使用 IIS 7 和 ASP.NET 的集成请求处理管道来处理托管代码的请求。

    经典型 — IIS 7 将通过 aspnet_isapi.dll 路由托管代码的请求,处理请求的过程与在 IIS 6 中运行应用程序一样。

  3. 已启用 SSL — 将此属性设置为 True 可以为网站启用 SSL。

  4. SSL URL — SSL URL。

  5. URL — 网站的 URL。

  6. Windows 身份验证 — 可以启用或禁用此属性;使用 Windows 身份验证可以通过 Windows NT LAN Manager (NTLM) 或 Kerberos 协议进行身份验证。

您在属性工具栏中更改的设置将存储在“My Documents\IISExpress\config\applicationhost.config”中。请注意,这些设置不在“C:\Program Files”文件夹中。每个用户都有其自己的 IIS Express 7.5 配置。由于这些配置是在本地 IIS Express 7.5 实例中严格设置的,并且配置文件未包含在解决方案文件中,不永久保存于源代码管理之中,因此使用时应小心谨慎。

将 IIS Express 7.5 项目与 Visual Studio 2010 RTM 共享

假设您有一个项目在 localhost:20221 上使用了 IIS Express 7.5,您希望与仍在使用 Visual Studio 2010 RTM 的团队伙伴共享该项目。只要这位团队伙伴在框中打开该 Web 项目,就会引发一个类似“在本地计算机上找不到服务器‘http://localhost:20221’”的错误。

这一错误背后的原因是 Visual Studio 2010 RTM 无法识别 IIS Express 并试图查找 locahost:20221。

您可以在 Web 应用程序项目中变通解决此问题,方法是在属性页 |“Web”选项卡中取消选中“将服务器设置应用到所有用户(存储在项目文件中)”(请参见图 6)。


Make Server Selection and Related Settings on a Per-User Basis
(单击进行缩放)

图 6 按用户进行服务器选择和相关设置

在解决方案管理器中右击项目,然后从上下文菜单中选择“属性”以显示属性页。

这会将服务器选择(Visual Web Development Server 或 IIS Express 7.5)及相关设置按用户存储在用户文件而不是项目文件中,从而导致服务器选择未永久存储在源代码管理中。

这使团队中的 Visual Studio 2010 RTM 用户仍可以使用 Visual Studio Development Server,而 Visual Studio 2010 SP1 用户可以对同一项目使用 IIS Express 7.5。对于网站项目,团队中的每个人都需要使用 Visual Studio 2010 SP1 才能共享项目并使用 IIS Express 7.5。

SQL Server CE 支持

Microsoft SQL Server CE 是一种免费的嵌入式数据库,可用于构建 ASP.NET 网站和桌面应用程序。它属于轻型数据库,无需执行任何安装。在生产服务器上,将 SQL Server CE 数据库引擎程序集放入 bin 文件夹后,Web 项目即可使用 SQL Server CE 数据库。(要了解 Visual Studio 如何自动将所需程序集添加到 bin 文件夹中,请参见本文的“可部署的依赖项”部分。)

有关 SQL Server CE 的更多详细信息,请参见 bit.ly/dsWBbMbit.ly/hvgQQV。要在 Visual Studio 2010 SP1 中获得 SQL Server CE 支持,可以使用 Web PI (bit.ly/maOfQX) 或通过独立安装程序下载组件。对于后一种方法,请安装以下两个组件:SQL Server CE 运行时 (bit.ly/f86AyF) 和 Visual Studio for SQL Server 工具 (bit.ly/kvxEQi)。

在此部分中,我们将探讨安装所需组件后激活的 SQL Server CE 功能。

通过 Visual Studio 2010 SP1,现在可以使用新模板创建 SQL Server CE 数据库(请参见图 7)。(要显示“添加新项”对话框,请在解决方案资源管理器中右击项目并选择“添加新项”)在向 Web 应用程序项目添加 .sdf 文件时,Visual Studio 2010 SP1 会自动添加对 System.Data.SqlServerCE 的引用;而对于网站,则会更新 web.config 以添加该程序集。


Creating a SQL Server CE Database
(单击进行缩放)

图 7 创建 SQL Server CE 数据库

要使用 .sdf 文件执行各种任务,请在解决方案资源管理器中右击该 .sdf 文件,这会打开服务器资源管理器窗格(请参见图 8)。

Right-Clicking on an .sdf File to Perform Various Tasks

图 8 右击 .sdf 文件以执行各种任务

服务器资源管理器可用于执行各种任务,例如创建新表、编辑现有表、编辑表架构、显示表数据等等。

Visual Studio 2010 SP1 中的其他数据功能(例如键/索引管理、实体框架设计器以及服务器/数据库资源管理器)也已更新为支持 SQL Server CE 数据库。

Razor 支持

在 Visual Studio 2010 SP1 中,对 Web 项目系统和 HTML 编辑器所做的更改支持新的 Razor 语法。这一新语法由 ASP.NET 网页和 ASP.NET MVC 3 使用。

有关 ASP.NET MVC Razor 语法的更多内容可在 bit.ly/aj0AuM 中阅读。

要在 Visual Studio 2010 SP1 中获得 Razor 语法支持,需要下载 ASP.NET MVC 3。

用于下载 ASP.NET MVC 3 的 Web PI 链接是 bit.ly/biXkTD。ASP.NET MVC 3 独立安装程序位于 bit.ly/hd2LDs

下面的文章说明了随 ASP.NET MVC 3 一起安装的组件:bit.ly/e7T4A3

现在为 Razor 语法增添了以下支持:

颜色设置。如果使用 Visual Studio 2010 SP1 和 ASP.NET MVC 3,则在您打开 Razor 文件(.cshtml 或 .vbhtml)时,Visual Studio 编辑器会为 HTML 以及 C# 或 Visual Basic 内容设置颜色。

此外,还可以通过在“工具”|“选项”对话框中选择“环境”|“字体和颜色”,更改 Razor 代码块的默认背景色(请参见图 9)。

Changing the Default Background Color for Razor Code Blocks

图 9 更改 Razor 代码块的默认背景色

IntelliSense。在 Razor 文件中提供了对 HTML 和 C#/Visual Basic 语言的完全 IntelliSense 支持。有关示例,请参见图 10


IntelliSense Support for Razor Code
(单击进行缩放)

图 10 对 Razor 代码的 IntelliSense 支持

调试。与对其他语言文件的支持一样,您也可以在 Razor 文件中添加断点,并可以使用 IDE 的所有调试功能(例如,逐过程执行和监视列表等)。

对于内嵌 Razor 表达式,不能通过单击侧边添加断点。解决方案是将光标移到表达式上,然后按 F9(用于添加断点的快捷键)。

可部署的依赖项

在前面的部分中,我们讨论了如何下载、安装和浏览 SQL Server CE、Razor 和 ASP.NET MVC 3 的功能。现在,我们希望将使用这些功能的 Web 项目发布到远程 Web 服务器。我们不确定远程服务器是否安装了 SQL Server CE、Razor 或 ASP.NET MVC 3,并且我们无法控制可在其中安装哪些组件。Visual Studio 2010 SP1 实际上可使用“添加可部署的依赖项”功能,帮助我们为这些组件进行二进制文件“bin 部署”(请参见图 11)。

The Add Deployable Dependencies Feature

图 11 “添加可部署的依赖项”功能

bin 文件夹是 Web 项目中可由 ASP.NET 识别的特殊文件夹。bin 文件夹可包含在 Web 应用程序中所引用的自定义 ASP.NET 控件、组件或其他代码的已编译程序集。

这个 Web 应用程序可能依赖于某个组件(例如,SQL Server CE),而我们希望将网站发布到未安装此依赖项(即未安装 SQL Server CE)的服务器上。

“bin 部署”意味着在部署应用程序时将依赖项复制到该应用程序的 bin 文件夹中,而不是使用安装程序将依赖项安装到全局程序集缓存 (GAC) 中。

要显示该对话框,请在解决方案资源管理器中右击 Web 项目,然后选择“添加可部署的依赖项…”

Visual Studio 2010 SP1 将显示一个对话框,其中列出了计算机上已安装的以及可部署的组件。该对话框将 ASP.NET MVC 显示为仅用于 ASP.NET MVC 3 项目的附加选项。(请参见图 12)。

The Add Deployable Dependencies Dialog Box for a Bin Deploy

图 12 用于执行 bin 部署的“添加可部署的依赖项”对话框

以下是单击“确定”后所发生的情况。对于网站,所选组件的所需程序集将从框中的依赖项安装位置复制到应用程序的 bin 文件夹中。现在,在将网站复制或发布到 Web 服务器时,这些组件会使用 bin 文件夹中的程序集运行。

在 Web 应用程序项目中,所选组件的程序集将复制到 _bin_deployableassemblies 文件夹中。在生成 Web 应用程序项目或将其打包以供部署时,二进制文件会从 _bin_deployableassemblies 文件夹复制到 bin 文件夹。

如此一来,即使在自定义生成过程中从 bin 中删除了文件,在发布项目时仍会正确地从 _bin_deployableassemblies 文件夹重新复制依赖项。

HTML5 和 CSS3 支持

在 HTML 编辑器增添了对 HTML5 的初步支持,以便可获取针对 HTML 元素和属性的 IntelliSense 和验证。未来版本的 Visual Studio 将提供带来更全面 HTML5 体验的完整版本。

要获得 HTML5 支持,请转至“工具”|“选项”,选择“文本编辑器”|“HTML”|“验证”,然后从下拉列表中选择“HTML5”。或者,也可以从 HTML 源编辑工具栏中选择 HTML5(请参见图 13)。要在编辑 HTML 或 Razor 文件时启用工具栏,请选择“视图”|“工具栏”|“HTML 源编辑”。

Selecting HTML5 from the HTML Source Editing Toolbar

图 13 从 HTML 源编辑工具栏中选择 HTML5

在 Visual Studio 2010 SP1 中,有几项对 CSS3 支持的改进,但这里就不像 HTML5 那样进行详细介绍了。CSS 编辑器现在支持更高级的选择器(例如 div:nth-child(2n+1))、新的颜色值 rgbahslhsla 以及八位十六进制值。

总结

概括来说,Visual Studio 2010 SP1 在某些方面收紧了 Visual Studio 的功能,但通过新 Web 组件与 IIS Express 7.5、Razor 版 ASP.NET MVC 3、SQL Server CE 工具以及 HTML5/CSS3 等的协同工作(并与 Web PI 紧密结合),让 Web 开发变得更加有趣。我们希望您能像我们一样喜爱这些工具。

Scott Hanselman 是 Microsoft 在华盛顿地区雷蒙德市之外的首席社区架构师。您可以在 Twitter (twitter.com/shanselman) 上关注他,在 hanselman.com 阅读他的博客,或者在 hanselminutes.com 收听他的播客。

Deepak Verma 在华盛顿地区雷蒙德市 Microsoft 总部担任软件开发测试工程师。他的团队的博客网址为 blogs.msdn.com/b/webdevtools