目标框架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(net40
和 net45
)的 API 作为目标。将复数形式的 TargetFrameworks 元素与多个目标框架一起使用。请注意为两个 .NET Framework TFM 编译库时,Condition
属性包括特定于实现的包的方法:
在库或应用中,编写条件代码以为每个目标框架编译:
生成系统可识别预处理器符号,这些符号表示表中所示的目标框架。使用表示 .NET Standard 或 .NET Core TFM 的符号时,用下划线替代句点,并将小写字母转换为大写字母(例如,netstandard1.4
的符号是 NETSTANDARD1_4
)。
以下目标框架已弃用。以这些目标框架为目标的包应迁移到指明的替代框架。