【转】[C#] .net core 项目的目标框架设置

转自:https://learn.microsoft.com/zh-cn/dotnet/standard/frameworks

image

 点图中 目标框架 旁边的问号,在微软官网看到了这个枚举:

支持的目标框架

目标框架通常被简称为 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.0net6.0net7.0net8.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 调用增加平台防护。 有关可用符号的列表,请参阅预处理器符号

posted on 2025-10-18 15:42  z5337  阅读(0)  评论(0)    收藏  举报