框架目标概述
在 Visual Studio 中,可以指定希望项目面向的 .NET 版本。 框架目标有助于保证应用程序仅使用指定框架版本中可用的功能。 要使 .NET Framework 应用在另一台计算机上运行,应用程序所面向的框架版本必须与计算机上安装的框架版本兼容。
Visual Studio 解决方案可以包含面向不同版本的 .NET 的项目。 但是,请注意,只能针对单个版本的 .NET 进行生成,要么对单个生成使用引用条件,要么为每个目标框架生成不同的二进制文件。 有关目标框架的详细信息,请参阅 目标框架。
提示
您还可以为不同平台的应用程序设置目标。 有关详细信息,请参阅多定向。
框架目标功能
框架目标包括以下功能:
打开面向早期框架版本的项目时,Visual Studio 可以自动升级项目或保留目标 as-is。
创建 .NET Framework 项目时,可以指定要面向的 .NET Framework 版本。
可以面向单个项目中的多个框架。
您可以在同一解决方案中的多个项目中分别针对不同版本的 .NET。
可以更改现有项目面向的 .NET 版本。
更改项目面向的 .NET 版本时,Visual Studio 将对引用和配置文件进行任何所需的更改。
处理面向早期框架版本的项目时,Visual Studio 会动态更改开发环境,如下所示:
它会筛选 “添加新项”对话框中的项、“添加新引用”对话框和“添加服务引用” 对话框中的项,以省略目标版本中不可用的选项。
在“工具箱”中筛选自定义控件,以删除在目标版本中不可用的控件,并在多个控件可用时仅显示最新版本。
它会筛选 IntelliSense,以省略目标版本中不可用的语言功能。
它会筛选 属性 窗口中的属性,以省略目标版本中不可用的属性。
它会筛选菜单选项以省略目标版本中不可用的选项。
对于构建,它使用适用于目标版本的编译器和编译器选项。
说明
- 框架目标不保证应用程序能够正常运行。 必须测试应用程序,以确保它可以在目标版本上运行。
- 不能以低于 .NET Framework 2.0 的框架版本为目标。
更改目标框架
在现有的 Visual Basic、C# 或 F# 项目中,可以在项目属性对话框中更改目标 .NET 版本。 有关如何更改C++项目的目标版本的信息,请参阅 如何改为修改目标框架和平台工具集。
在 解决方案资源管理器中,打开要更改的项目的右键单击上下文菜单,然后选择 属性。
在 属性 窗口的左列中,选择 应用程序 选项卡。
说明
创建 UWP 应用后,无法更改 Windows 或 .NET 的目标版本。
在 目标框架 列表中,选择所需的版本。
在显示的“验证”对话框中,选择“是”按钮。
项目将卸载。 重新加载时,它将针对您刚刚选择的 .NET 版本。
在 解决方案资源管理器中,打开要更改的项目的右键单击上下文菜单,然后选择 属性。
在 属性 窗口的左列中,选择 应用程序 选项卡。
说明
创建 UWP 应用后,无法更改 Windows 或 .NET 的目标版本。
在 目标框架 列表中,选择所需的版本。
对于 .NET Framework 项目,看到的对话框可能类似于以下屏幕截图:
对于 .NET 项目,对话框可能类似于以下屏幕截图:
如果显示“验证”对话框,请选择“是”按钮。
项目将卸载。 项目重载时,将面向刚选择的 .NET 版本。
面向多个框架
使用 .NET 5 及更高版本,可以通过手动编辑项目文件,在单个生成中为多个框架生成项目。 打开项目文件,将 TargetFramework
属性替换为 TargetFrameworks
,并指定你的目标框架别名 (TFM) 列表,用分号分隔,如下面的代码所示:
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
请参阅位于 SDK 样式项目中的目标框架的 TFM 列表。
进行此更改后,必须重新加载项目。 之后,如果打开 属性 窗口,请在 应用程序 选项卡中编辑目标框架列表。
说明
如果代码包含对不同版本的 .NET 的引用,则编译或运行代码时可能会出现错误消息。 若要解决这些错误,请修改引用。 请参阅 .NET 定位错误疑难解答。
提示
根据目标框架,可以在项目文件中以以下方式表示它:
- 对于 .NET Core 应用:
<TargetFramework>netcoreapp2.1</TargetFramework>
- 对于 .NET Standard 应用:
<TargetFramework>netstandard2.0</TargetFramework>
- 对于 .NET Framework 应用:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
选择目标框架版本
创建 .NET Framework 项目时,可以在选择项目模板后选择目标 .NET Framework 版本。 可用框架列表包括适用于所选模板类型的已安装框架版本。 对于 non-.NET Framework 项目模板(例如 .NET Core 模板),不会显示 Framework 下拉列表。
如果选择 创建 .NET Framework 项目,你将看到类似于以下屏幕截图的接口:
如果选择 创建 .NET 项目,你将看到类似于以下两个屏幕截图的用户界面(UI)。
你将看到的第一个屏幕是“配置新项目”对话框。
你将看到的第二个屏幕是“其他选项”对话框。
解析系统和用户程序集引用
为了针对某个 .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。