更好地进行编码

使用 Visual Studio 2010 更好地进行编码

Doug Turnure

13 年前 Microsoft 首次推出了 Visual Studio,这是其长时间运行的旗舰级集成开发环境。1997 年的第一版开始将版本 5 的 Visual Basic 和 Visual C++ 整合为一个公用 IDE。其企业版采用了一些曾经享有盛名的技术,包括 Visual InterDev、Microsoft Transaction Server 和 Visual SourceSafe 5.0。该版本的主要目的是帮助开发人员通过组件构建分布式应用程序,既包括客户端/服务器应用程序,也包括 Web 应用程序。

作为开发人员,我们从那时到现在走过了很长一段路。虽然经过修改的客户端/服务器和 Web 体系结构仍在编码领域中占主导地位,但这些应用程序的范围和要求已超出同构系统和强类型化对象到对象调用的范围。

现在,具象状态传输 (REST) 和相关的技术正成为主流的基础通信机制。应用程序开始在基于云的体系结构中寻找一个新家,从而让第三方获得可扩展性、可靠性和数据安全性。同时,Web 应用程序模式正向商品化的风格和标准看齐。甚至硬件也在不断变化,处理器的速度已接近当前芯片技术的理论峰值,并且多核系统提供了新的途径从一台计算机中挤榨出更高的性能。

在这种背景下,并且在软件和软件开发人员的迫切要求中,Visual Studio 2010 适时出现了。同时,在新功能的武装下,它可以在目前跨平台、核心、风格和标准扩展的世界中,随时满足对软件不断增长的要求。本文将介绍 Visual Studio 2010 用于解决当今挑战的一些主要方式,帮助开发人员构建能够在现在所处复杂行业中不断发展的解决方案。在这里并不会介绍每个新功能,本文的目的是重点介绍开发人员能够在日常工作中立即投入使用的一些特定功能。有关完整的功能列表,可以轻松在产品文档中找到。

Visual Studio IDE 改进

由于软件开发要不断处理越来越复杂的情况,对于提高工作效率,开发人员常常备感压力。Visual Studio 2010 在编辑器中新增了几个可视功能,可帮助提高工作效率。在本文中,我将讨论其中三个功能。

Visual Studio 2010 IDE 中一个比较简单的改进是能够将子窗口拖到 IDE 父窗口之外。监视器已变得非常经济,足以让开发人员在工作中使用两台(或更多)监视器,而这种新功能允许您将编码和设计窗口分布到多个屏幕中。

使用方法:只需单击窗口的选项卡,并将其拖到 Visual Studio IDE 窗口之外。单击标题栏并将窗口拖回 IDE 区域,然后将标题栏与其他窗口的选项卡对齐,该窗口即可轻松地重新停靠。重新停靠时,如果该窗口已正确对齐,您将看到一个直观提示:该窗口将变暗,表示已准备好在您释放时重新停靠。图 1 显示了一个代码窗口,该窗口已拉到 IDE 父窗口之外。

图 1 从 IDE 分出窗口
图 1 从 IDE 分出窗口

Visual Studio 2010 中另一个出色的新功能是能够框选和编辑垂直文本块。有时需要对较大的项列表进行编辑,您会发现自己一直在执行熟悉且快速重复的键盘序列(例如,一次又一次地执行“n+向下箭头+后退箭头”)。虽然这可能不是最常见的问题,但确实偶尔发生。许多开发人员都希望能够选中整个垂直块,并能一次对所有行应用同一种更改。Visual Studio 2010 引入了这种块编辑功能。

使用方法:按住 Alt 键,然后选择要编辑的垂直部分。突出显示的区域将类似一个单行编辑,但这些编辑将同时在所选行上重复进行,如图 2 所示。

图 2:框选
图 2 框选

还有一个针对代码中引用的有用突出显示功能。如果在编辑器中单击一个变量、对象、方法、属性、类型或其他符号,则代码中对该符号的引用都会突出显示,可帮助您快速发现使用该项目的位置。

**使用方法:**选择一个类型/变量/方法/任何内容,然后直接单击它,其他实例都将突出显示。图 3 以一个名为 jumpList 的变量为例显示了此功能,可以看到在鼠标单击将其选中后,该变量在代码中的所有实例都带有灰色阴影。

图 3 突出显示的符号
图 3 突出显示的符号

支持并行编程

让我们来深入了解一下 IDE 的新功能,我将介绍的下一个重要新功能是对并行编程的支持。Visual Studio 2010 附带了一些诊断工具,可帮助调试和分析并行应用程序。但在介绍此工具之前,我将简要介绍一下并行编程的概念,然后我们便可以理解运行时和库如何实现这些新功能。

现在,许多标准开发人员计算机都是多核计算机,意味着这些计算机都有两个或更多的单独处理器,并且目前计算机的趋势是采用更多核心。除了纯粹的创新功能之外,诸如节电、时钟速度的实际限制、能耗和散热之类的因素都影响着多核系统趋势。一些业界领导者预测,在未来几年,主流计算机将具有 50 或更多个核心。

这带来一个独特的问题。在多核革命之前,更快的计算机意味着能更快地运行应用程序。但是,限定于一个核心的软件(最新软件)无法利用这一新兴的体系结构。因此,面向以后的多核体系结构非常关键。在 Visual Studio 2010 和 .NET Framework 4 之前,编写可以使用多个核心的代码非常困难。为解决这一挑战,此版本包含了一些运行时更新(以及一些新类型、库和工具),帮助开发人员来利用多核系统。

.NET Framework 4 包括具有三个组件的并行扩展:一个新的任务并行库 (TPL),一个新的 PLINQ 执行引擎和一些新的协调数据结构 (CDS)。TPL 包含两个主类。其中一个为 System.Threading.Tasks.Parallel,它包括一些并行结构,例如,For 和 ForEach 方法的并行版本。顾名思义,PLINQ 执行引擎是 LINQ to Objects 的并行化版本,提供了一个 ParallelEnumerable 类代替 LINQ 的 Enumerable 类。使用 PLINQ 与使用 LINQ to Objects 类似,但并不相同。最后,CDS 包含一组线程安全的集合和同步基元来简化并行方案。CDS 包含一些熟悉的播放器,您可能需要在线程安全的集合(例如,ConcurrentDictionary、ConcurrentQueue 和 ConcurrentStack)以及同步类型(SemaphoreSlim、SpinLock、SpinWait 等等)中使用这些播放器。

通过新的“并行堆栈”窗口、“并行任务”窗口和 Concurrency Visualizer,Visual Studio 2010 引入了对并行扩展的支持。这些窗口的设计都可帮助您更好地了解在给定时刻各个任务在其执行中的位置。“并行堆栈”窗口显示多个任务是如何通过其专用路径工作的,并显示这些任务的调用堆栈。可以选择按任务抽象或直接作为线程查看该窗口。图 4 显示了运行时的“并行堆栈”窗口,该窗口中显示了任务抽象视图选项。

图 4 Visual Studio 2010 中的“并行堆栈”窗口
图 4 Visual Studio 2010 中的“并行堆栈”窗口

已特别添加“并行任务”窗口来支持基于任务的新编程模型。当应用程序处于中断模式时,您可以使用此窗口查看一些内容,例如任务列表、每个任务当前执行的方法、附属线程、应用程序域、任务 ID 和其他内容。该窗口并非纯静态视图:您可以单击特定任务,IDE 会通过将当前执行的代码放在最前面来显示其状态。图 5 显示了示例应用程序的“并行任务”窗口。与“并行堆栈”窗口并排使用此窗口是一种快速了解正在执行的代码的出色方法。

图 5 Visual Studio 2010 中的“并行任务”窗口
图 5 Visual Studio 2010 中的“并行任务”窗口

最后,为了获得并行应用程序的更深入分析,Visual Studio 2010 中新增了一个 Concurrency Visualizer。此窗口比其他两个窗口要复杂得多,但目前不支持 Web 项目。其目的是让您深入了解应用程序在多核和多线程方案中如何与其环境交互。共有三个视图:

  • “CPU 利用率”视图显示处理器活动。
  • “线程”视图显示应用程序中的线程如何进行交互。
  • “核心”视图提供有关线程如何跨核心迁移的特定信息。

Concurrency Visualizer 依赖 Windows 事件跟踪,这意味着它需要在 Windows Vista 或更高版本中运行。这些视图(从基本文本到完全图形显示)揭示了代码中由以下原因导致的效率低下:跨 CPU 糟糕地分布负荷、执行瓶颈、争用以及其他潜在的性能约束因素。图 6 显示了 Concurrency Visualizer,其中显示了被分析应用程序的线程使用情况。

图 6 Visual Studio 2010 中的 Concurrency Visualizer
图 6 Visual Studio 2010 中的 Concurrency Visualizer

Web 更新

除了我前面介绍的普通更新之外,您会发现,迁移到 Visual Studio 2010 的 Web 开发人员还会获得一些显著改进的功能。当然,Visual Studio 2010 中现在包含了新的模型-视图-控制器 (MVC) 编程模型工具,我将在下一节对其进行介绍。此外,还有一些针对客户端和服务器端 Web 技术的改进 Web 开发体验,以及一个新的单击式 Web 部署模型。不过,我会首先介绍 ASP.NET AJAX 和 IDE 的相关新功能。

从 Visual Studio 2008 开始,Visual Studio 中已经存在 ASP.NET AJAX 工具。但是,以服务器为中心的模板使一些开发人员认为它不会对客户端开发起到显著的作用。虽然客户端功能一直以来都存在,但 Visual Studio 2010 包括了能真正体现 ASP.NET AJAX 的客户端和服务器端功能的额外支持。客户端模板和控件是新功能列表的重要组成部分,因为它们能帮助您利用改进的客户端数据访问功能,但诸如 jQuery 集成之类的其他许多新项目也值得采用。

在 Visual Studio 2010 和 .NET Framework 4 之前,如果您希望使用软件下载并将 Microsoft AJAX Library 与 Visual Studio 合并,则您要在添加 ScriptManager 时将所有内容都注入页面。此版本已经合并了 Microsoft AJAX Library 和 AJAX 控件工具包。此外,Microsoft AJAX 团队对库进行了重构,因此您现在可以请求获得所需的个别部分的内容,而不是被迫进行全有或全无的选择。您可以指定一个模式,用于请求获得 Microsoft AJAX Library 的所有部分、特定部分,或所有部分都不请求。

**使用方法:**只需在 ScriptManager 标记中包含 AjaxFrameworkMode 属性。可以将其设置为 Disabled、Enabled 或 Explicit:

<asp:ScriptManager ... AjaxFrameworkMode="Disabled"/>

Disabled 意味着您不希望加载 Microsoft AJAX Framework。Enabled 意味着您希望使用以前版本中的现有行为(加载完整库)。Explicit 允许您指定要加载哪些 Microsoft AJAX Library 文件。可以在运行时使用已加载页面的“查看源代码”对此进行验证。

同样,新的内容传送网络 (CDN) 属性允许您使用最新版本的脚本库。以前,可以在项目中包括 jQuery 或 Microsoft AJAX 等脚本库,并且所包括的版本也是您对该发行版坚持使用的版本。现在,您可以要求从 Web 下载最新的版本,而不是讲一个修复过的版本填入解决方案。

**使用方法:**在 asp:ScriptManager 标记中,您可以包含 EnableCdn 属性,将其设置为“true”:

<asp:ScriptManager ... EnableCdn="true"/>

同时,ASP.NET AJAX 4.0 允许您定义纯客户端模板。您可以设置一个占位符 <ItemTemplate>,然后让客户端基于运行时值(例如,一个 JSON 绑定对象)进行渲染。运行时将代表您执行实例化,您不必执行 DOM 编码即可使其工作。

ASP.NET AJAX 4.0 最有用的一个新增功能是改进的客户端数据访问,它使用一个新的 DataView 控件和一些客户端模板,在客户端中提供轻松的访问和双向数据绑定。它的设计方式使之可以使用 ASMX Web 服务、WCF 服务、WCF 数据服务、MVC 控制器,或返回 JSON 的任何内容,并且完全通过客户端代码执行此操作。

DataView 控件是用于支持客户端模板的主要控件。其功能类似于 ListView 控件,但完全在客户端代码中实现。它允许在客户端中定义一个模板,在运行时拉入数据,然后在显示记录时将格式应用到这些记录。

使用方法:可以通过非常简单的步骤设置此阶段:基于 Northwind SQL 数据库创建一个实体数据模型,并使用传统的 WCF 数据服务将其直接拉入而不进行任何更改,这意味着 Employees 表应该可用于查询。在这个背景下,选择希望作为模板的控件,并为其提供一个 ID 属性和 class=“sys-template” 属性。创建数据视图时,ID 用于表示在绑定上所拉数据的目标。您可以手动绑定,但还有一个使用大括号的语法将字段名称直接嵌入标记,在提取数据和绑定到该标记时,该标记将会被替换。有多种语法可以实现此目的,但编写脚本和标记执行此操作的一种更加便于理解的方式是使用双大括号,如图 7 所示。

图 7 通过 DataView 控件改进数据访问

...
   <script type="text/javascript">
    Sys.require([Sys.components.dataView, 
                 Sys.components.adoNetServiceProxy], function () {
            
       var adoNetDataServiceProxy = 
         new Sys.Data.AdoNetServiceProxy('NWDataService.svc');
         
       Sys.create.dataView("#employeetemplate", {
         dataProvider: adoNetDataServiceProxy,
         fetchOperation: "Employees",
         autoFetch: true
            });
       });
    </script>
</head>
<body>
  <div id="employeetemplate" class="sys-template">
      <span>{{ FirstName }}</span><br/> 
  </div>
</body>

对于 ASP.NET AJAX 项目,还有一点值得一提,就是它已设置为与 jQuery 更紧密地集成。为了让 jQuery 开发人员利用 ASP.NET AJAX 中的控件,所有 AJAX 控件工具包现在都自动作为 jQuery 插件公开。这意味着 jQuery 开发人员可以使用这些控件,而不必更改其开发风格。您可以简单地将这些控件视为 jQuery 扩展。

除了 ASP.NET AJAX 领域,还有其他几个针对 ASP.NET 编程体验的出色增强功能。Web 窗体的 URL 路由增加了 URL 的清晰感和逻辑性:更加利于搜索引擎优化 (SEO),并且更便于查看者理解。您可以在 global.asax 文件中定义路由,从而将请求与相应的资源对应起来。这不仅帮助改进了 SEO,而且页面可以为用户呈现可预测的路径,如图 8 所示。

图 8 Visual Studio 2010 中的 URL 路由改进

New URL Routing Format:
    /CurrentPosition/Bob/Tester

Old URL Style:
    /CurrentPositions.aspx?name="Bob"&role="Tester"

还有更多值得介绍的 Web 相关增强功能(例如,初学者网站、更清晰的 HTML 以及更小的配置文件),但我无法在本文中全部讨论,因此,我将转到 MVC 工具增强功能。

MVC 集成

MVC 体系结构模式是构建高度可维护、可测试 Web 应用程序的一种流行方式,这些应用程序具有明确定义的界限以及按功能明确分类的代码。MVC 是一种充分利用 ASP.NET 框架的 ASP.NET 编程方式。它是除 Web 窗体之外的另一种选择,但不是取代 Web 窗体。对于某些方案和技能集,这两种模型都能良好工作。现在,开发人员可以选择 Web 应用程序的编程模型。这两种模型都以 ASP.NET 为基础,并且在 Visual Studio 2010 中完全受支持。

版本 2 的 MVC 及其附属工具(在 Visual Studio 的各个版本之间构建)已与 Visual Studio 2010 IDE 中的两个项目模板集成,如图 9 所示。

图 9 Visual Studio 2010 中的 MVC 项目模板
图 9 Visual Studio 2010 中的 MVC 项目模板

对于 Visual Studio 2010 版本,MVC 编程模型重点进行了三个方面的改进。第一方面改进是更好地分离不同的关注点。这意味着通过一些内容可以更好地维护代码,例如,新的 RenderAction 方法(用于编写业务逻辑分离),以及 Areas(允许创建“子应用程序”分隔应用程序中的功能)。第二方面改进是一个更好的验证情景,通过数据批注和向客户端提供验证规则降低了验证难度。最后,还有一些帮助程序改进。现在,有强类型化的帮助程序和模板化的帮助程序,可让您自动生成实体的 UI。

**使用方法:**RenderAction 使得跨多个控制器共享一个逻辑非常容易。若要从视图内调用 RenderAction 方法,可使用以下脚本(该脚本会调用 HRController 中的 NewEmployee 操作):

<%  Html.RenderAction("NewEmployee" "HRController"); %>

SharePoint 集成

Visual Studio 2010 中另一个重要的工具集成是添加了 SharePoint Foundation(以前称为“Windows SharePoint Services”)模板。Visual Studio 2010 附带了 12 个适用于 SharePoint Foundation 的新模板,再加上 SharePoint 2007 顺序工作流和状态机工作流模板(通过 Visual Studio 2008 的 Visual Studio Tools for Office 加载项提供)。这些模板将 SharePoint 开发提升至最优状态,主要关注工作效率和灵活部署。

SharePoint Foundation 本身在核心应用方面也在发生改变,正从一个可以扩展的简单门户网站转变为一个用于从头开始使用组件(例如,用户管理、基础列表基础结构和站点模型)构建应用程序的平台。在数据访问、业务线应用程序集成和工作流方面有显著改进。同时,还有一个更灵活的部署模型。现在,许多公司都安装了大量 SharePoint,并且需要对新 SharePoint 应用程序的临时部署更加小心。通过灵活的新部署模型,您现在可以采用沙盒将新安装部署到特定组,而不需要跨整个 SharePoint 生态系统部署这些新安装。

Visual Studio 2010 已极大改进了用于构建 SharePoint 应用程序的工具选项。的确,针对此目的的强大功能已经存在,但最初的学习过程非常艰难。对于此版本,您会发现对内置到这些工具中的 SharePoint 的出色支持。这包括全面而集成的调试、灵活的部署工具,以及对 Business Connectivity Services (BCS)、工作流、LINQ to SharePoint 和可视 Web 部件改进的设计支持。还有一个更好的桥梁用于将项目从 SharePoint Designer 工具导入到 Visual Studio 2010 中。

使用方法:在 Visual Studio 2010 中使用新的设计图面构建可视 Web 部件极为容易。先选择启动一个新项目,然后选择“SharePoint”|“可视 Web 部件”,如图 10 所示。

图 10 Visual Studio 2010 中的 SharePoint 可视 Web 部件模板
图 10 Visual Studio 2010 中的 SharePoint 可视 Web 部件模板

请注意,您需要在开发人员计算机上为此目的安装 SharePoint,但并不像过去安装时那么困难。如果您使用的是 Windows Vista SP1(或更高版本)或 Windows 7,则现在可以直接在该计算机上安装 SharePoint,而不必担心安装 Windows Server 或为其设置 VM 的问题。

系统将提示您告知 Visual Studio 2010 在何处安装解决方案进行调试。打开编辑器后,可以单击左下方的“设计”选项卡,然后开始以可视方式构造 Web 部件(只需将控件拖动到设计图面)。请注意,如果工具箱尚未显示,则可能需要将其打开(“视图”菜单 |“工具箱”)。

Windows 7 开发

随着 Windows 7 的日益普及,开发人员可能开始希望在应用程序中添加一些功能,以利用此新平台上提供的一些丰富体验。开发人员可以通过很多方法添加 Windows 7 特定的功能。一个流行的新功能是新的任务栏。鉴于任务栏早已为用户所接受并且易于编程,它十分适合用在面向 Windows 7 的应用程序中。

任务栏取代了以前版本的 Windows 中的快速启动任务栏。任务栏沿 Windows 7 屏幕底部(默认情况下)显示,并允许应用程序“固定”到其中。此外,应用程序还可以借助任务栏包含一些元素,例如跳转列表和任务栏预览:跳转列表是可通过右击停靠图标得到的快速链接集;任务栏预览是应用程序的打开窗口的缩图显示。任务栏可以很容易地从托管代码(通过 Windows 7 API 代码包)和非托管代码进行编程,十分适合开发人员在构建运行于 Windows 7 上的应用程序时使用。

**使用方法:**用户只需在“开始”菜单、资源管理器或任务栏自身中右键单击图标,即可将应用程序固定到任务栏或从任务栏取消固定。若要固定应用程序,请右击该应用程序(不是文档,而是应用程序本身)图标,选择“锁定到任务栏”。若要将其从任务栏中移除,请执行相同的操作,但选择“将此程序从任务栏解锁”。

任务栏为应用程序同时提供了外观改进和功能改进。任何程序都可以固定到任务栏,无论该程序是否正在运行都是如此。固定图标可以启动该应用程序,或用于表示最小化窗口。应用程序正在运行时,如果将光标放在任务栏中的图标上,会产生一种称为“热跟踪”的出色视觉效果。热跟踪取用图标的主体颜色,并用该颜色突出显示该图标。当然,您还将在固定图标之上看到应用程序运行实例预览。

任务栏还有一个称为 Aero Peek 的功能。若要查看此功能,可以将光标放在一个窗口预览上,这样,所选预览的窗口将提到最前面,而其他窗口将变暗。用户若要在不更改焦点也不按一个键的情况下快速查看隐藏窗口或最小化窗口,这是一个好方法。

为跟踪应用程序,要为正在运行的应用程序实例提供应用程序 ID,并将这些实例与其在任务栏中的应用程序图标对应起来。如果您是开发人员,可以使用 TaskbarManager 和 JumpList 类以编程方式从应用程序与任务栏交互。请注意,若要使用这些类,您需要下载和引用 code.msdn.microsoft.com/WindowsAPICodePack 上免费 Windows 7 API 代码包中的程序集。

此代码包由 Windows SDK 团队构建,允许您以编程方式使用任务栏。它还包含一些具有 Windows 7 增强功能的示例应用程序。您在代码中实际上是设置对这些已编译程序集的引用(在此示例中,用于浏览任务栏项目)。

此外,对于一个应用程序的多个实例,可以灵活地提供相同的应用程序 ID 或唯一的应用程序 ID,以便可以在任务栏上将其分组排列或单独排列。若要为应用程序的不同实例提供唯一 ID,需要在调用 Application.Run 之前设置应用程序 ID。如果只希望每个子窗口在任务栏中各有自己的图标,则可以随时更改其应用程序 ID。

**使用方法:**若要在任务栏中为子窗口单独提供图标,请使用 JumpList 类并调用静态方法 CreateJumpListForIndividualWindow,同时传入子窗口应用程序 ID 和该窗口的句柄。代码如下所示:

childWindowJumpList = JumpList.CreateJumpListForIndividualWindow(
childWindowApplicationId, this.Handle);

Windows Azure 集成

对于传统的内部和 Web 承载体系结构解决方案,云计算正迅速成为一个可行的替代解决方案。简单而言是这样一种想法:取出您的部分(或全部)软件解决方案,让公司在一个具有按需扩展和高可靠性的巨大数据中心内承载一切。Windows Azure Platform 是 Microsoft 的云计算和服务平台。它包括三组服务:Windows Azure、SQL Azure 和 Windows Azure Platform AppFabric。

Windows Azure 是用于承载应用程序的环境,可以将其视为云中的操作系统。从本质上说,SQL Azure 是云中的数据库。Windows Azure AppFabric 是一组通用构造块,可以由云中承载的应用程序使用。Windows Azure AppFabric 目前包含两个服务:访问控制服务(用于联合身份验证和基于声明的授权)和服务总线(用于在云中的解决方案与内部部署的解决方案之间建立连接)。

Visual Studio 2010 包含多个用于构建 Windows Azure Platform 解决方案的项目模板。对于 VB.NET 和 C#,有四个不同的 Web 角色模板,每个模板对应一个辅助角色。还有一个针对 F# 的辅助角色项目模板。VB.NET 和 C# 的 Web 角色模板分别对应于 ASP.NET、MVC with ASP.NET、WCF 服务和 CGI。

在 Visual Studio 2010 中使用 Windows Azure Platform 项目的一个独特之处在于:创建项目时您可以为项目选择多个角色。例如,您可以创建一个新项目,该项目具有 C# 中的 ASP.NET MVC Web 角色和 VB.NET 中的辅助角色。这就是“新建”|“项目”体验与云应用程序略微不同的原因,您实际上是从对话框选择这些角色,而不是通过可以在大多数其他项目模板中看到的单选模式进行选择。

使用方法:若要在 Visual Studio 2010 中创建一个面向 Windows Azure Platform 的项目,可以从“已安装的模板”列表中选择“云”,如图 11 所示。

图 11 在 Visual Studio 2010 中选择云项目类型
图 11 在 Visual Studio 2010 中选择云项目类型

这将弹出一个对话框,可以从中选择所需的角色,每个角色都可能是一个不同的类型和/或语言。图 12 显示了一个新的 Windows Azure 云服务项目,具有一个 ASP.NET MVC Web 角色、两个 VB.NET 辅助角色和一个 F# 辅助角色。

图 12 设置具有多个角色和语言的云服务项目
图 12 设置具有多个角色和语言的云服务项目

多重目标

多重目标本身对于 Visual Studio 2010 来说并非新事物,但它有一个值得关注的新的扩展性功能。许多人都没有意识到多重目标的优势,不了解多重目标如何让他们使用 Visual Studio 2010 来构建将在早期版本 .NET Framework 上运行的解决方案,这种情况多少有点令人惊讶。对于希望利用最新工具(使用其高级的调试功能和改进的编辑器功能)但尚未准备好将其代码(也可能是客户)迁移到 .NET Framework 4 的开发团队而言,多重目标是个理想选择。利用多重目标,可以选择将应用程序构建为面向 .NET Framework 版本 2.0、3.0、3.5 或 4。

使用方法:启动一个新项目时,只需在下拉列表中选择目标 Framework 即可,如图 13 所示。

图 13 通过多重目标选择目标 Framework 版本
图 13 通过多重目标选择目标 Framework 版本

通过一个名为 <更多 Framework…> 的新选项(请注意图 13 中圈出的下拉列表框中的最后一项),可以扩展受支持目标 Framework 的范围。这允许添加 Framework 的未来版本,甚至在将来某个时候添加其他 .NET Framework 配置文件。这种添加最可能通过 MSI 安装,但最终可能会通过一个 XML 描述文件手动添加,并将 Framework 程序集直接复制到计算机上。

更多内容

Visual Studio 2010 中还有其他许多新功能,我无法在本文中一一介绍。例如,可自定义的起始页就不容忽略,它为公司提供了整合公司特定资源的绝佳机会。此外,还有 C++/ANSI 更新、不断更新的帮助、新的 F# 编程语言、实体框架增强功能、代码可视化和其他很多值得学习的新功能。这些功能进一步巩固 Visual Studio 2010 作为强有力开发工具的地位,一个能够提供目前行业所需软件类型的开发工具。希望您现在对 Visual Studio 2010 中提供的新功能有了新的体会。如果您希望试用此软件,可以从 microsoft.com/vstudio 下载一个评估版本。 

Doug Turnure 是 Microsoft 的 Visual Studio 团队的项目经理,主要专注于客户意见的反馈和采纳。在职业生涯的不同时期,他曾经做过开发人员、作家、培训师、高音演唱者、营销人员,并偶尔作为会议发言人。现在,Turnure 安享着他在西雅图的生活,虽然多年来他一直宣称不会搬到那里。

衷心感谢以下技术专家,感谢他们审阅了本文:Miguel Castro、Mark Dunn 和 Jim Wooley