惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Spread Privacy
Spread Privacy
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
T
Tenable Blog
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
P
Proofpoint News Feed
A
About on SuperTechFans
P
Privacy International News Feed
月光博客
月光博客
雷峰网
雷峰网
S
Secure Thoughts
博客园 - 叶小钗
博客园 - 聂微东
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Project Zero
Project Zero
The Cloudflare Blog
SecWiki News
SecWiki News
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
罗磊的独立博客
A
Arctic Wolf
阮一峰的网络日志
阮一峰的网络日志
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
Schneier on Security
Schneier on Security
小众软件
小众软件
有赞技术团队
有赞技术团队
博客园 - 司徒正美
T
Tailwind CSS Blog
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Security @ Cisco Blogs
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
L
Lohrmann on Cybersecurity

博客园 - yhuse

MiniMax 权益码 Token Plan 套餐 9 折优惠,Token Plan 共建邀请计划 至2026.7.31 MiniMax 权益码 Token Plan 套餐 9 折优惠,Token Plan 共建邀请计划 至2026.7.31 MiniMax 权益码 Token Plan 套餐 9 折优惠,Token Plan 共建邀请计划 至2026.7.31 MiniMax 权益码 Token Plan 套餐 9 折优惠,至2026.6.30 MiniMax 权益码 Token Plan 套餐 9 折优惠,至2026.6.30 MiniMax 权益码 Token Plan 套餐 9 折优惠 MiniMax 权益码 Token Plan 套餐 9 折优惠 MiniMax 权益码 Token Plan 套餐 9 折优惠 WinForms 内置的公共系统级别编辑器 科技衰退,CodeProject.com 关闭了 DataView RowFilter Syntax [C#] [原创][开源]C# Winform DPI自适应方案,SunnyUI三步搞定 .NET Standard 对 .NET 的每个实现的支持 NuGet 包版本引用 | Microsoft Docs C# Winform窗体继承过程中,TableLayoutPanel是不支持继承的 VS2022安装.NetFramework4.0目标包的方法 VS2022禁用全局using,禁用GlobalUsings.g.cs Ubuntu下libpcap安装步骤 Ubuntu 18.04 安装.net 5 .Net Framework各版本微软技术支持及到期日期 [原创][开源] SunnyUI.Net 常见问题答疑 [原创][开源] SunnyUI.Net 开发日志:UIBarChart 坐标轴刻度取值算法 [原创][开源] SunnyUI.Net 主题 [原创][开源] SunnyUI.Net 字体图标 [原创][开源] SunnyUI.Net 国际化 [原创][开源] SunnyUI.Net 安装 [原创][开源] SunnyUI.Net 开发日志:UIListBox 增加跟随鼠标滑过高亮
TargetFrameworks输出多版本类库,SDK 样式项目中的目标框架
yhuse · 2020-11-17 · via 博客园 - yhuse

https://docs.microsoft.com/zh-cn/dotnet/standard/frameworks#net-5-os-specific-tfms

https://docs.microsoft.com/zh-cn/dotnet/standard/frameworks#net-5-os-specific-tfms

TargetFrameworks输出多版本类库,SDK 样式项目中的目标框架

以应用或库中的框架为目标时,需要指定想要向应用或库提供的 API 集。 使用目标框架名字对象 (TFM) 在项目文件中指定目标框架。

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

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

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

对于基于包的目标框架(例如 .NET Standard 和 .NET Core),API 由包含在应用或库中的包定义。 元包 是一个 NuGet 包,NuGet 包本身不包含任何内容,只是一个依赖项列表(其他包)。 基于 NuGet 包的目标框架隐式指定一个元包,该元包引用一起构成框架的所有包。

最新版本

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

支持的目标框架

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

* .NET 5.0 及更高版本的 TFM 包含特定于 OS 的变体。 有关详细信息,请参阅下一节:.NET 5 特定于 OS 的 TFM

.NET 5 特定于 OS 的 TFM

对于每个 .NET 5.0 及更高版本的 TFM(例如 net5.0),都存在包含特定于 OS 的绑定的 TFM 变体。 下表中显示了这些变体。

你还可以指定可选的 OS 版本,例如 net5.0-ios12.0

有关 .NET 5 TFM 的详细信息,请参阅 .NET 5 中的目标框架名称

如何指定目标框架

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

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

指定多个目标框架时,可有条件地为每个目标框架引用程序集。 在代码中,可使用具有 -if-then-else 逻辑的预处理器符号,有条件地针对这些程序集进行编译。

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

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.4;net40;net45</TargetFrameworks>
  </PropertyGroup>

  

在库或应用中,使用预处理器指令编写条件代码,针对每个目标框架进行编译:

public class MyClass
{
    static void Main()
    {
#if NET40
        Console.WriteLine("Target framework: .NET Framework 4.0");
#elif NET45
        Console.WriteLine("Target framework: .NET Framework 4.5");
#else
        Console.WriteLine("Target framework: .NET Standard 1.4");
#endif
    }
}

使用 SDK 样式项目时,生成系统可识别预处理器符号,这些符号表示支持的目标框架版本表中所示的目标框架。 使用表示 .NET Standard、.NET Core 或 .NET 5 TFM 的符号时,请用下划线替换点和连字符,并将小写字母更改为大写字母(例如,netstandard1.4的符号为 NETSTANDARD1_4)。

.NET 目标框架的预处理器符号的完整列表如下:

已弃用的目标框架

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

SunnyUI.Net:C# .Net WinForm开源控件库、工具类库、扩展类库、多页面开发框架;Sunny's blog:https://www.cnblogs.com/yhuse