面向网站的 .NET Framework
更新:2007 年 11 月
Visual Studio 2008 的多目标功能使您能够指定希望网站或 Web 服务针对的 .NET Framework 版本。这让您可以使用 Visual Studio 2008 来修改现有的和新的 Visual Studio 2008 Web 项目,而不会在无意中在项目内创建新的程序集依赖项。通过使用 Visual Studio 2008,您可以构建能够部署到 .NET Framework 2.0、.NET Framework 3.0 版 或 .NET Framework 3.5 版 Service Pack 1 的网站。这是通过确保项目只使用在您为该项目指定的 .NET Framework 版本中可用的功能来实现的。
本主题包含有关以下内容的信息:
方案
Visual Studio 2008 中的多目标功能使您能够让网站针对特定的 .NET Framework 版本。例如,您可以创建一个使用 Windows Communication Foundation (WCF) 所支持的安全功能的 ASP.NET Web 应用程序。如果应用程序不需要 语言集成查询 (LINQ) 支持,则可以针对 .NET Framework 3.0 版。
返回页首
多目标功能
Visual Studio 2008 的多目标功能包含下列内容:
可以在创建新网站时选择 .NET Framework 的版本。
Visual Studio 可以在您打开网站时检测 .NET Framework 的版本。
当 Visual Studio 检测到网站使用 .NET Framework 2.0 版时,Visual Studio 可以让您选择针对 .NET Framework 3.5 版 Service Pack 1。
Visual Studio 将筛选出不适用于当前所针对的 .NET Framework 版本的功能。这包括菜单选项、**“工具箱”**对象、编译进程和程序集引用。
可以使用项目属性来选择目标 .NET Framework 版本。
.NET Framework 库
Visual Studio 可让您针对 .NET Framework 的下列版本:
.NET Framework 版本 2.0 Microsoft Visual Studio 2005 附带的 .NET Framework 版本。
.NET Framework 版本 3.0 操作系统附带的 .NET Framework 版本。此 .NET Framework 版本包括对 Windows Presentation Foundation (WPF)、Windows Communication Foundation (WCF)、Windows CardSpace 和 Windows Workflow Foundation 的支持。
.NET Framework 版本 3.5 Visual Studio 默认附带的 .NET Framework 版本。此 .NET Framework 版本包括对 ASP.NET AJAX 和语言集成查询 (LINQ) 的支持。
返回页首
背景
Visual Studio 2008 可让您在单一的开发环境中针对多个 .NET Framework 版本。Visual Studio 2005 及早期版本只针对单一版本的 .NET Framework。希望针对不同版本的 .NET Framework 编写应用程序的开发人员通过运行 Visual Studio 的并行版本来实现这一点。运行库依赖项和向后兼容性是与多目标有关的主要注意事项。
在 Visual Studio 2008 中,可以打开一个 Visual Studio 2005 网站,而无需对代码进行任何更改。但是,将会对网站的项目文件进行升级。默认情况下,Visual Studio 2005 项目将继续针对 .NET Framework 2.0。但是,可以切换现有项目的目标框架版本,利用 .NET Framework 更高版本中的新功能。
最新的 .NET Framework 功能包含在新程序集中。早期版本 .NET Framework 的程序集保持不变。
创建新网站
创建新网站时,您可以选择项目针对的 .NET Framework 版本。新的 Visual Studio 项目将自动针对最新版本的 .NET Framework。
下面的过程说明如何创建针对特定的 .NET Framework 版本的新网站。
创建新网站并指定 .NET Framework 目标
在 Visual Studio 中,在**“文件”菜单中单击“新建网站”**。
显示**“新建网站”**对话框。
从框架版本列表中,选择希望项目针对的 .NET Framework 版本。
对话框中显示的模板列表是根据您选择的框架筛选得到的。
在**“Visual Studio 已安装的模板”下,选择一个网站类型,例如“ASP.NET 网站”**。
单击**“确定”**。
打开现有的 Visual Studio 2005 网站
Visual Studio 2008 使您能够打开在早期版本的 Visual Studio 中创建的项目或网站,而无需将项目升级到更新版本的 .NET Framework。您可以编辑、编译、生成、调试和保存 Visual Studio 2005 项目。
您可以打开现有的 Visual Studio 2005 项目,而无需针对更高的 .NET Framework 版本。在 Visual Studio 2008 中第一次打开 Web 应用程序时,系统将提示您使网站针对 .NET Framework 3.5 版 Service Pack 1。如果不想更改目标框架,请单击**“否”**。
![]() |
---|
打开远程网站时,Visual Studio 2008 不会尝试根据在远程服务器上安装的 .NET Framework 版本筛选可用版本。 |
升级或降级现有网站的目标 .NET Framework 版本
下面的过程描述如何更改现有项目的 .NET Framework 版本以针对较新的或较旧的版本。
通过升级到 .NET Framework 的较新版本,可以利用新功能。而通过将 Web 应用程序降级到不同的 .NET Framework 版本,可以针对在不同 Web 服务器上安装的 .NET Framework 版本。
如果要降级某个项目,必须确保该项目可用于较旧版本的 .NET Framework。这通常要求您在项目中手动进行更改。
![]() |
---|
除了每个 .NET Framework 版本中可用的不同功能之外,当您更改 Web 应用程序的 .NET Framework 版本时的主要差异位于 Web.config 文件中。 |
升级或降级网站的 .NET Framework 版本
在 Visual Studio 2008 中,打开要升级或降级的网站。
在**“解决方案资源管理器”中右击项目名称,然后单击“属性页”**。
说明:
对于 Web 应用程序项目,在“解决方案资源管理器”中右键单击该项目,然后单击“属性”。
在**“项目属性”页上,单击“生成”**选项卡。
说明:
对于使用 C# 的 Web 应用程序项目,单击“项目属性”页上的“应用程序”选项卡。对于使用 Visual Basic 的 Web 应用程序项目,单击“项目属性”页上的“编译器”选项卡,然后单击“高级编译器设置”。
在 .NET Framework 下拉列表中,选择要针对的版本号。
说明:
对于 Web 应用程序项目,将在 Visual Studio 中卸载该项目并重新加载。
如果降级某个项目,请执行以下各项操作:
手动移除对不属于所针对的 .NET Framework 版本的组件的引用。
说明:
您可能会看到代码中出现引用错误,这是因为有些程序集引用不再适用于较旧的 .NET Framework 版本。在这种情况下,您必须手动替换任何缺少的程序集引用。
如果项目包含服务引用,请通过右击相应的服务引用并单击**“移除”**以将其移除。
程序集引用
Visual Studio 有助于您将引用添加到 Web 项目,而无需自动升级到不同的 .NET Framework 版本。
添加对程序集的引用时,**“添加引用”**对话框会仅显示属于目标 .NET Framework 版本的系统程序集。这样可防止您无意中添加对不在目标框架中的程序集的引用。
![]() |
---|
您可以手动编辑项目文件,以包含属于版本高于当前项目的 .NET Framework 目标的引用。但是,这将在编译时产生警告。 |
您可能会在项目中添加一个用户程序集引用,而该用户程序集又引用不属于目标框架的系统程序集。在这种情况下,Visual Studio 将会显示一个警告。如果忽略此警告,它将在生成时再次显示。
返回页首
针对 .NET Framework 版本时的项目差异
本节着重介绍针对不同 .NET Framework 版本的 Web 项目之间的差异。这些差异包括编译、程序集支持和功能支持。Visual Studio 中的某些功能不包括对多目标的支持,例如 IntelliSense 和部署。
对于新的网站,所选择的 .NET Framework 版本将确定下列各项:
默认引用的程序集。
默认情况下,在 ASP.NET 网页和类文件中包含的命名空间。
由 ASP.NET 在运行时和设计时用于动态编译的编译器的版本。
可在 Visual Studio 中选择的选项,例如对象、新项、程序集引用、Web 引用和服务引用。
打开现有网站时,Visual Studio 将尝试检测 .NET Framework 的版本和设置项目的目标 .NET Framework 版本。Visual Studio 通过使用下列条件来确定 .NET Framework 的版本:
如果存在对 .NET Framework 3.0 程序集的引用,Web 项目将至少针对 .NET Framework 3.0。(根据其他条件的不同,它可能针对更高的版本。)
如果 Web.config 文件中的 compilers 节映射到 C# 或 Visual Basic 的编译器版本“v3.5”,则网站将针对 .NET Framework 3.5。
如果存在对 .NET Framework 3.5 程序集的引用,则网站将针对 .NET Framework 3.5。
如果网站不符合以上条件,则它将针对 .NET Framework 2.0 版。
说明:
如果先前使用 Visual Studio 打开或创建了项目,则在该项目中已存储目标版本号。在这种情况下,Visual Studio 使用存储的版本号。它不会尝试检测存储的版本号与从引用和编译器检测的版本之间是否存在不匹配。
选择项目模板
Visual Studio 仅显示应用于当前针对的 .NET Framework 版本的项目模板。创建新网站时,Visual Studio 自动针对 .NET Framework 的最高版本号,以提供对最新功能的访问。或者,您可以在创建项目时选择一个目标版本。
用于新网站的 Web.config 文件的默认内容基于选定的 .NET Framework 版本。默认引用的程序集在 assemblies 节中指定,编译器的版本在 compilers 节中指定。
从工具箱添加对象
Visual Studio 禁用**“工具箱”中不适用于当前所针对的 .NET Framework 版本的项。“工具箱”**的多目标行为假定某个特定版本的 .NET Framework 的组件可以在该版本或更高版本的项目中使用。例如,在 .NET Framework 2.0、.NET Framework 3.0 版 或 .NET Framework 3.5 版 Service Pack 1 中可使用 .NET Framework 2.0 控件。
添加新项
Visual Studio 根据当前针对的 .NET Framework 版本筛选**“添加新项”**对话框中显示的项。
![]() |
---|
如果将现有项添加到某个项目中,则 Visual Studio 不会验证该项的引用和导入是否与当前针对的 .NET Framework 版本匹配。将不生成任何警告。但是,如果在项目中无法解析这些引用,则在生成和运行项目时,将会显示一个错误。 |
添加程序集引用
打开**“添加引用”**对话框时,Visual Studio 将检查 .NET Framework 版本的当前针对的版本,并且仅枚举对该版本可用的程序集。用于更高版本的目标框架的程序集虽然也会显示,但会被禁用。
**“添加引用”对话框的标题包含当前的 .NET Framework 目标版本。因为该对话框显示每个程序集的框架版本,所以您可以确定需要使用哪个版本的 .NET Framework 来添加引用。当您将鼠标指针悬停于不可用的程序集上时,“添加引用”**对话框还会以工具提示的形式显示有关该程序集的信息。
![]() |
---|
如果手动添加系统引用(不使用“添加引用”对话框),则 Visual Studio 不检查引用。您可能会在设计时或生成时看到警告,指示程序集引用不属于当前针对的 .NET Framework 目标版本。 |
添加服务引用
**“添加服务引用”**对话框仅在针对 .NET Framework 3.5 的网站中以及针对 .NET Framework 3.0 或 .NET Framework 3.5 的 Web 应用程序项目中可用。如果要向针对 .NET Framework 3.0 的网站添加服务引用,则可以将服务引用添加到一个类库项目。然后可以从网站项目引用该类库项目。
![]() |
---|
不能在 Visual Web Developer 中将类库添加到项目。 |
使用 IntelliSense
Visual Studio 2008 中的语言服务不针对 .NET Framework 的特定版本。因此,编辑器将始终为 C# 和 Visual Basic 的最新版本提供 IntelliSense。
Web 项目将为所有 .NET Framework 版本显示 IntelliSense,而与项目针对的框架版本无关。当您针对 .NET Framework 2.0 版或 .NET Framework 3.0 时,任何引用 .NET Framework 3.5 版 的功能的代码都将导致编译器错误。
JScript IntelliSense 与项目针对的 .NET Framework 版本无关。
部署项目
Visual Studio 2008 中的“发布网站”和“复制网站”工具不针对 .NET Framework 的特定版本。Visual Studio 不检查在远程服务器上运行的 .NET Framework 的版本。这些工具无法通知您是否将项目发布到了包含版本低于项目所针对版本的 .NET Framework 的目标服务器上。在这种情况下,不会运行针对更高版本的 .NET Framework 的项目。
返回页首
请参见
概念
参考
返回页首