Welcome

首页 / 软件开发 / VC.NET / Visual Studio 2008中WCF的新增功能

Visual Studio 2008中WCF的新增功能2008-04-27 Msdn Juval LowyVisual Studio 2008和基础Microsoft .NET Framework 3.5提供了新工具,并支持Windows Communication Foundation(WCF)。它们并未改变WCF 1.0(与.NET Framework 3.0一起发布)的基本功能,而是对其进行了扩展和完善。

Visual Studio 2008可自动执行WCF手动任务,包括更新代理引用和消除重复任务(例如创建简单托管项目)。Visual Studio还能解决跨目标和数据协定类型共享等一些困难问题。在本专栏中,我将逐步介绍其新功能及优势,并对其任何缺陷和解决方法做出解释。尽管我将在此使用C#项目设置,但除非我另行说明,否则所有设置同样适用于Visual Basic。

.NET Framework跨目标

Visual Studio的早期版本通常针对随其一起提供的 .NET Framework 版本。例如,Visual Studio 2005 只能生成针对 .NET Framework 2.0 的程序集,而此惯例并不能反映大多数开发人员所面临的真实情况。通常,开发人员需要在维护针对早期版本的 .NET 而编写的旧版应用程序的同时,还要在其新版应用程序中使用新版 Visual Studio。

此外,此惯例还意味着开发人员在维护为早期版本的 .NET Framework 而编写的应用程序时,无法从效率增强功能(例如 Visual Studio 2005 中引入的代码重构支持)中获益。

问题在于 .NET Framework 各版本不支持跨目标功能。您要么必须安装多个版本的 Visual Studio,要么使用独立的测试和部署内部版本进行补偿。Visual Studio 2008尝试通过为多个版本的.NET Framework提供充分支持(虽然不完美)来解决这一问题。由于实际上.NET Framework 3.0和.NET Framework 3.5使用的CLR版本与.NET Framework 2.0使用的相同,唯一的区别在于新引用的程序集,因此Visual Studio仍可针对相同运行库,而为.NET Framework版本2.0、3.0和3.5(其中.NET Framework版本号对应的是发行版本,而不是运行库版本,运行库版本仍为CLR 2.0)提供跨目标功能。

在Visual Studio 2008中,“Properties”(项目)的“Application”(应用程序)窗格包含一个称为“Target Framework”(目标框架)的新组合框,通过该组合框您就可以针对.NET Framework版本2.0、3.0和3.5(参见图1)。

图1:Visual Studio 2008中的目标框架属性

Target Framework值仅在开发时有效,而在运行时无效(您的程序集仍指向.NET 2.0 CLR)。您选择的值表示您构建程序集时可针对的.NET Framework的最早版本。新项目默认被配置为针对.NET Framework 3.5。如果添加引用,则会变得有些复杂;如果在引用较高版本程序集时,降低Target Framework版本,Visual Studio 2008将提示您引用出错和内部版本失败。Visual Studio 2008不允许您向其所需Framework版本高于现有项目的.NET Framework程序集添加引用。如果您向版本更高的同一解决方案中的其他项目添加引用,Visual Studio 2008将警告您可能会发生冲突。如果通过浏览程序集来添加引用,Visual Studio 2008将不会干预您进行操作。

在语言和跨目标方面,请注意,您可以在C#中(而不是Visual Basic中),通过限制编译器版本来限制使用.NET Framework 2.0或3.0项目中诸如匿名类型和扩展方法等功能。您可以转至“Build”(内部版本)窗格,然后单击“Advanced”(高级)按钮,并选择“ISO-2(C# 2.0)”作为语言版本(而不是尚未标准化的默认版本)来执行此操作。

在Visual Studio 2008中打开Visual Studio 2005 WCF项目时,升级过程中框架版本保持为 2.0。实际上这可以正常运行(请记住,基础运行库版本并未改变),但我建议根据需要手动将其设置为版本 3.0 或 3.5。

使用新项目模板时,Target Framework 版本是最重要的因素。WCF 工作流和整合项目必须针对 .NET Framework 3.5 进行构建;Service Library 项目要求针对 .NET Framework 3.0 或 3.5。“Add Service Reference”(添加服务引用)功能仅当为项目选择 Framework 版本 3.0 或 3.5 时可用,本专栏稍后将介绍此功能。