适用范围:
Visual Studio
Visual Studio for Mac
Visual Studio Code
在 Visual Studio 中,可以指定希望项目面向的 .NET 版本。 框架定位有助于确保应用程序仅使用指定框架版本中可用的功能。 对于在另一台计算机上运行的 .NET Framework 应用,应用程序面向的 Framework 版本必须与计算机上安装的 Framework 版本兼容。
Visual Studio 解决方案可以包含针对不同 .NET 版本的项目。 但是,请注意,仅可针对单个 .NET 版本进行生成,可以使用单个生成的引用条件,也可以递归方式针对每个版本生成不同的二进制文件。 有关目标框架的详细信息,请参阅
目标框架
。
你还可以针对不同平台确定目标应用程序。 有关详细信息,请参阅
多定向
。
框架目标功能
框架目标包含下列功能:
打开面向早期框架版本的项目时,Visual Studio 可自动升级项目或者保持目标不变。
创建 .NET Framework 项目时,可指定要面向的 .NET Framework 版本。
可以
面向单个项目中的多个框架
。
同一个解决方案中的多个项目可以面向不同的 .NET 版本。
可更改现有项目面向的 .NET 版本。
更改项目面向的 .NET 版本时,Visual Studio 会对引用和配置文件进行任何所需的更改。
处理面向早期框架版本的项目时,Visual Studio 会对开发环境进行如下动态更改:
它筛选“添加新项”对话框、“添加新引用”对话框和“添加服务引用”对话框中的项,以忽略在目标版本中不可用的选项。
在“工具箱”中筛选自定义控件,以删除在目标版本中不可用的控件,并在多个控件可用时仅显示最新版本。
筛选 IntelliSense,忽略在目标版本中不可用的语言功能 。
筛选“属性”窗口中的属性,忽略在目标版本中不可用的属性 。
筛选菜单选项,忽略在目标版本中不可用的选项。
对于生成,Visual Studio 使用适用于目标版本的编译器版本和编译器选项。
框架目标不保证应用程序可正常运行。 必须对应用程序进行测试,以确保其能够针对目标版本运行。
无法面向低于 .NET Framework 2.0 的框架版本。
选择目标框架版本
创建 .NET Framework 项目时,可在选择项目模板后,选择目标 .NET Framework 版本。 可用框架的列表包含适用于所选模板类型的已安装框架版本。 对于非 .NET Framework 项目模板(例如,.NET Core 模板),“框架”下拉列表将不显示 。
更改目标框架
对于现有的 Visual Basic、C# 或 F# 项目,可在项目属性对话框中更改目标 .NET 版本。 有关如何更改 C++ 项目目标版本的信息,请改为参阅
如何修改目标框架和平台工具集
。
在“解决方案资源管理器”中,打开要更改的项目的右键单击上下文菜单,然后选择“属性” 。
在“属性”窗口的左列中,选择“应用程序”选项卡 。
创建 UWP 应用后,无法更改 Windows 或 .NET 目标版本。
在“目标框架” 列表中,选择所需版本。
在显示的“验证”对话框中,选择“是” 按钮。
项目将卸载。 项目重载时,将面向刚选择的 .NET 版本。
对于 .NET Core 应用:
<TargetFramework>netcoreapp2.1</TargetFramework>
对于 .NET Standard 应用:
<TargetFramework>netstandard2.0</TargetFramework>
对于 .NET Framework 应用:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
解析系统和用户程序集引用
要面向 .NET 的某个版本,必须首先安装合适的程序集引用。 可以在
.NET 下载
页下载针对不同 .NET 版本的开发者包。
对于 .NET Framework 项目,“添加引用”对话框会禁用与目标 .NET Framework 版本无关的系统程序集,以免将其意外添加到项目中。 (系统程序集是包含在 .NET Framework 版本内的 .dll 文件。)若引用所属的框架版本高于目标版本,则无法解析引用,并且无法添加基于此类引用的控件。 若要启用此类引用,请将项目的 .NET Framework 目标重新设置为包含此引用。
有关程序集引用的详细信息,请参阅
在设计时解析程序集
。
启用 LINQ
当面向 .NET Framework 3.5 或更高版本时,会自动添加对 System.Core 的引用和
System.Linq
的项目级导入(仅 Visual Basic 中)。 若要使用 LINQ 功能,还必须打开
Option Infer
(仅 Visual Basic 中)。 如果将目标更改为早期的 .NET Framework 版本,将自动删除相关引用和导入。 有关详细信息,请参阅
使用 LINQ
。
多目标 (MSBuild)
如何:修改目标框架和平台工具集 (C++)