目标框架Target frameworks

应用或库可以使用 版本作为目标。.NET Standard 版本表示所有 .NET 实现中的标准化 API 集。例如,库可以使用 .NET Standard 1.6 作为目标,并获得对可使用相同基本代码跨 .NET Core 和 .NET Framework 工作的 API 的访问权限。

应用或库还能以一个特定 .NET 实现为目标,获得特定于实现的 API 的访问权限。例如,面向 Xamarin.iOS 的应用(如 )有权访问 Xamarin 提供的适用于 iOS 10 的 iOS API 包装器;面向通用 Windows 平台 (UWP) 的应用(如 uap10.0)有权访问为运行 Windows 10 的设备编译的 API。

对于某些目标框架(例如 .NET Framework),API 由框架在系统上安装的程序集定义,并且可能包括应用程序框架 API(例如 ASP.NET)。

下表定义了最常见的目标框架、如何引用这些框架,以及它们实现的 .NET Standard 版本。这些目标框架版本是最新的稳定版本。预览版不会显示。目标框架名字对象 (TFM) 是一个标准化令牌格式,用于指定 .NET 应用或库的目标框架。

目标框架通常由 TFM 引用。下表显示 .NET Core SDK 和 NuGet 客户端支持的目标框架。等效项显示在括号内。例如,win81 对于 netcore451 来说等效于 TFM。

在项目文件中指定目标框架。指定单个目标框架时,使用 TargetFramework 元素。以下控制台应用项目文件演示了如何以 .NET Core 2.2 为目标:

以下库项目文件以 .NET Standard (netstandard1.4) 的 API 和 .NET Framework(net40net45)的 API 作为目标。将复数形式的 TargetFrameworks 元素与多个目标框架一起使用。请注意为两个 .NET Framework TFM 编译库时,Condition 属性包括特定于实现的包的方法:

在库或应用中,编写条件代码以为每个目标框架编译:

生成系统可识别预处理器符号,这些符号表示表中所示的目标框架。使用表示 .NET Standard 或 .NET Core TFM 的符号时,用下划线替代句点,并将小写字母转换为大写字母(例如,netstandard1.4 的符号是 NETSTANDARD1_4)。

以下目标框架已弃用。以这些目标框架为目标的包应迁移到指明的替代框架。