【转】[C#] .net core 项目的目标框架设置
转自:https://learn.microsoft.com/zh-cn/dotnet/standard/frameworks

点图中 目标框架 旁边的问号,在微软官网看到了这个枚举:
支持的目标框架
目标框架通常被简称为 TFM。 下表显示 .NET SDK 和 NuGet 客户端支持的目标框架。 等效项显示在括号内。 例如,win81 对于 netcore451 来说等效于 TFM。
| 目标框架 | TFM |
|---|---|
| .NET 5 及更高版本(和 .NET Core) | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 net5.0* net6.0* net7.0* net8.0* net9.0* |
| .NET Standard | netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
| .NET 框架 | net11 net20 net35 net40 net403 net45 net451 net452 net46 net461 net462 net47 net471 net472 net48 net481 |
| Windows 应用商店 | netcore [netcore45] netcore45 [win] [win8] netcore451 [win81] |
| .NET nanoFramework | netnano1.0 |
| .NET Micro Framework | netmf |
| Silverlight | sl4 sl5 |
| Windows Phone | wp [wp7] wp7 wp75 wp8 wp81 wpa81 |
| 通用 Windows 平台 | uap [uap10.0] uap10.0 [win10] [netcore50] |
* .NET 5 及更高版本的 TFM 包含一些特定于操作系统的变体。
.NET 5 及更高版本特定于 OS 的 TFM
net5.0、net6.0、net7.0、net8.0 和 net9.0 TFM 包括可以跨不同平台工作的技术。 指定特定于 OS 的 TFM 使特定于操作系统的 API 可供你的应用(例如 Windows 窗体或 iOS 绑定)使用。 特定于操作系统的 TFM 会继承其基础 TFM中的所有可用 API,例如 net9.0 TFM。
.NET 5 引入了 net5.0-windows 特定于 OS 的 TFM,其中包括适用于 WinForms、WPF 和 UWP API 的特定于 Windows 的绑定。 .NET 6 及更高版本具有其他特定于 OS 的 TPM,例如 net6.0-ios。
下表说明了 .NET 5 及更高版本 TFM 的兼容性。
| TFM | 可兼容对象 |
|---|---|
net5.0 |
net1..4(带有 NU1701 警告) netcoreapp1..3.1 (引用 WinForms 或 WPF 时出现警告) netstandard1..2.1 |
net5.0-windows |
netcoreapp1..3.1(以及从 net5.0 继承的所有其他内容) |
net6.0 |
(后续版本的 net5.0) |
net6.0-android |
xamarin.android(以及从 net6.0 继承的所有其他内容) |
net6.0-ios |
从 net6.0 继承的所有内容 |
net6.0-maccatalyst |
从 net6.0 继承的所有内容 |
net6.0-macos |
从 net6.0 继承的所有内容 |
net6.0-tvos |
从 net6.0 继承的所有内容 |
net6.0-windows |
(后续版本的 net5.0-windows) |
net7.0 |
(后续版本的 net6.0) |
net7.0-android |
(后续版本的 net6.0-android) |
net7.0-ios |
(后续版本的 net6.0-ios) |
net7.0-maccatalyst |
(后续版本的 net6.0-maccatalyst) |
net7.0-macos |
(后续版本的 net6.0-macos) |
net7.0-tizen |
tizen40(以及从 net7.0 继承的所有其他内容) |
net7.0-tvos |
(后续版本的 net6.0-tvos) |
net7.0-windows |
(后续版本的 net6.0-windows) |
net8.0 |
(后续版本的 net7.0) |
net8.0-android |
(后续版本的 net7.0-android) |
net8.0-browser |
从 net8.0 继承的所有内容 |
net8.0-ios |
(后续版本的 net7.0-ios) |
net8.0-maccatalyst |
(后续版本的 net7.0-maccatalyst) |
net8.0-macos |
(后续版本的 net7.0-macos) |
net8.0-tizen |
(后续版本的 net7.0-tizen) |
net8.0-tvos |
(后续版本的 net7.0-tvos) |
net8.0-windows |
(后续版本的 net7.0-windows) |
net9.0 |
(后续版本的 net8.0) |
net9.0-android |
(后续版本的 net8.0-android) |
net9.0-browser |
(后续版本的 net8.0-browser) |
net9.0-ios |
(后续版本的 net8.0-ios) |
net9.0-maccatalyst |
(后续版本的 net8.0-maccatalyst) |
net9.0-macos |
(后续版本的 net8.0-macos) |
net9.0-tizen |
(后续版本的 net8.0-tizen) |
net9.0-tvos |
(后续版本的 net8.0-tvos) |
net9.0-windows |
(后续版本的 net8.0-windows) |
若要使应用可跨不同平台移植,但仍有权访问特定于 OS 的 API,你可以定位多个特定于 OS 的 TFM,并使用 #if 预处理器指令围绕特定于 OS 的 API 调用增加平台防护。 有关可用符号的列表,请参阅预处理器符号。
