Visual Studio中项目目标框架设置详解
Visual Studio中项目目标框架设置详解
在Visual Studio中,开发者可以指定项目所面向的.NET版本。这种框架目标设置有助于确保应用程序仅使用指定框架版本中可用的功能。本文将详细介绍如何在Visual Studio中设置和更改项目的目标框架版本。
框架目标概述
在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++项目的目标版本的信息,请参阅如何改为修改目标框架和平台工具集。
- 在解决方案资源管理器中,打开要更改的项目的右键单击上下文菜单,然后选择属性。
- 在属性窗口的左列中,选择应用程序选项卡。
- 在目标框架列表中,选择所需的版本。
- 如果显示“验证”对话框,请选择“是”按钮。
项目将卸载。项目重载时,将面向刚选择的.NET版本。
对于.NET Framework项目,对话框可能类似于以下屏幕截图:
对于.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。
参考资料
本文内容来自微软官方文档,详细介绍了在Visual Studio中设置和更改项目的目标框架版本的方法。对于.NET开发者来说,掌握这些技术细节是非常有帮助的。