.NET 7 中的新增功能
Posted ejinxian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 7 中的新增功能相关的知识,希望对你有一定的参考价值。
.NET 7 是 .NET 6 的后续版本,侧重于统一、新式、简单和 快速。 .NET 7 将作为标准期限支持 18 个月 , (STS) 版本 (以前称为 当前 版本) 。
本文列出了 .NET 7 的新功能,并提供了指向每个功能的详细信息的链接。
若要查找已针对 .NET 7 更新的所有 .NET 文章,请参阅 .NET 文档:.NET 7 版本的新增功能
System.Text.Json 序列化
.NET 7 在以下方面包括对 System.Text.Json 序列化的改进:
- 通过协定自定义 ,可以更好地控制如何序列化和反序列化类型。 有关详细信息,请参阅 自定义 JSON 协定。
- 用户定义的类型层次结构的多态序列化。 有关详细信息,请参阅序列化派生类的属性。
- 支持 必需成员,这些成员是 JSON 有效负载中必须存在的属性,才能成功反序列化。 有关详细信息,请参阅必需属性。
有关这些更新和其他更新的信息,请参阅 . NET 7 中 System.Text.Json 中的新增功能 博客文章。
正则表达式
.NET 的 正则表达式 库在 .NET 7 中对功能和性能进行了重大改进:
-
新选项 RegexOptions.NonBacktracking 使用避免回溯并保证输入长度的线性时间处理的方法进行匹配。 非回溯引擎不能在从右到左的搜索中使用,并且 有一些其他限制,但对于所有正则表达式和输入来说都很快。
-
正则表达式源生成器是新的。 源生成器生成一个引擎,该引擎在编译时针对 你的 模式进行优化,从而提供吞吐量性能优势。 发出的源是项目的一部分,因此可以查看和调试它。 此外,新的源生成器诊断
SYSLIB1045
会提醒你使用 Regex 可转换为源生成器的位置。 有关详细信息,请参阅 .NET 正则表达式源生成器。 -
对于不区分大小写的搜索,.NET 7 具有较大的性能提升。 之所以获得收益,是因为指定 RegexOptions.IgnoreCase 不再对模式中的每个字符和输入中的每个字符调用 ToLower 。 相反,所有与大小写相关的工作都是在构造 时 Regex 完成的。
-
Regex 现在支持某些 API 的跨度。 已添加以下新方法作为此支持的一部分:
有关这些改进和其他改进的详细信息,请参阅 .NET 7 中的正则表达式改进 博客文章。
System.Text.Json 序列化
.NET 7 在以下方面包括对 System.Text.Json 序列化的改进:
- 通过协定自定义 ,可以更好地控制如何序列化和反序列化类型。 有关详细信息,请参阅 自定义 JSON 协定。
- 用户定义的类型层次结构的多态序列化。 有关详细信息,请参阅序列化派生类的属性。
- 支持 必需成员,这些成员是 JSON 有效负载中必须存在的属性,才能成功反序列化。 有关详细信息,请参阅必需属性。
有关这些更新和其他更新的信息,请参阅 . NET 7 中 System.Text.Json 中的新增功能 博客文章。
.NET 7 版本的 .NET 文档中的新增功能。 本文列出了与 .NET 功能更新相关的文档的一些主要更改。
.NET 中断性变更
.NET 基础知识
新文章
- .NET 7 中的新增功能
- AOT 警告简介
- 诊断监视和收集实用工具 (dotnet-monitor)
- 使用 dotnet publish 容器化 .NET 应用
- System.Threading.Channels 库
- 在 .NET 中限制 HTTP 处理程序的速率
- 升级 WCF 服务器端项目以在 .NET 6 上使用 CoreWCF
- dotnet workload 命令
- NuGet 签名的包验证
- .NET SDK 错误列表
- 用于生成正则表达式源的 SYSLIB 诊断
- 用于 p/invoke 源生成的 SYSLIB 诊断
- JavaScript 互操作源生成的 SYSLIB 诊断
- SYSLIB0038:SerializationFormat.Binary 已过时
- SYSLIB0039:SslProtocols.Tls 和 SslProtocols.Tls11 已过时
- SYSLIB0040:EncryptionPolicy.NoEncryption 和 EncryptionPolicy.AllowNoEncryption 已过时
- SYSLIB0041:某些 Rfc2898DeriveBytes 构造函数已过时
- SYSLIB0042:ECC 类型上的 FromXmlString 和 ToXmlString 已过时
- SYSLIB0043:ECDiffieHellmanPublicKey.ToByteArray 已过时
- SYSLIB0044:AssemblyName.CodeBase 和 AssemblyName.EscapedCodeBase 已过时
- SYSLIB0046:不应使用 ControlledExecution.Run
- SYSLIB0047:XmlSecureResolver 已过时
- CA2019: ThreadStatic 字段不应使用内联初始化
- CA2259:确保 ThreadStatic 仅用于静态字段
- CA1420:属性、类型或属性需要运行时封送处理
- CA1422:验证平台兼容性 - 已过时的 API
- CA2260:正确实现泛型数学接口
- CA1854:首选 IDictionary.TryGetValue(TKey, out TValue) 方法
- CA1851:可能多次枚举了 IEnumerable 集合
- 首选“null”检查而不是类型检查 (IDE0150)
- 简化属性模式 (IDE0170)
- 使用元组来交换值 (IDE0180)
- N命名空间声明首选项(IDE0160 和 IDE0161)
- .NET 正则表达式源生成器
- 泛型数学
- 平台调用的源生成
- 自定义封送的源生成
- 教程:在源生成的 P/Invoke 中使用自定义封送程序
- 自定义 JSON 协定
更新的文章
- .NET 简介 - 为 .NET 7 添加新信息。
- .NET SDK - 为 .NET 7 添加新工具和库。
- 本机 AOT 部署 - 记录 AOT 分析警告
- 单文件部署和可执行文件 - 更新单文件不兼容文档
- 准备用于剪裁的 .NET 库 - 更新剪裁库文档
- 剪裁选项 - 清理剪裁选项和文档 TrimMode=full,partial
- 教程:容器化 .NET 应用 - 添加
dotnet publish
.NET 7 容器化支持的文章。 - .NET 中的 HTTP 处理程序速率限制 - 介绍自定义 HTTP 处理程序的新
RateLimiter
文章 - .NET 中的配置提供程序 - 环境变量前缀中断性变更
- 将 HTTP/3 与 HttpClient 配合使用 - 更新 .NET 7 中 HttpClient 的 HTTP/3 支持
- 使用 .NET 的 IHttpClientFactory - 新
HttpClient
文章 - .NET、MSBuild 和 Visual Studio 版本控制概述
- 添加预览版 SDK 表
- 正式化版本控制支持策略
- 升级 WCF 服务器端项目以在 .NET 6 上使用 CoreWCF - 在升级助手上添加 CoreWCF 扩展的文档
- .NET RID 目录 - 添加 ios 和 android RID
- 线程的运行时配置选项 - 记录添加到可移植线程池的新配置开关
- .NET SDK 项目的 MSBuild 引用
- 添加三个新属性
- 为控制 PDB 和 XML 发布的项目属性添加文档
- 更新 PublishRelease 和 PackRelease 的文档
- 添加 DisableTransitiveProjectReferences
- 清理剪裁选项和文档 TrimMode=full,partial
- 记录新的 PublishRelease 和 PackRelease 属性
- 管理 .NET 应用程序中的包依赖项 - 添加三个新属性
- dotnet new 的 .NET 默认模板 - 添加了两个新的 Blazor 空模板
- .NET SDK 和 .NET CLI 遥测
- 将 PublishProtocol 属性添加到遥测数据泄露列表
- 记录来自早期版本和即将发布的版本的 SDK 遥测数据
- dotnet new install - 的新语法
dotnet new
- dotnet new list - 的新语法
dotnet new
- dotnet new search - 的新语法
dotnet new
- dotnet new uninstall - 的新语法
dotnet new
- dotnet new update - 的新语法
dotnet new
- dotnet new <TEMPLATE> - 的新语法
dotnet new
- dotnet 还原 - 记录对 NuGet 签名包验证的 .NET 7 SDK 更改
- dotnet publish - Document Publish UseCurrentRuntime
- dotnet build - Document UseCurrentRuntime
- dotnet watch - 请注意--non-interactive 是 .NET 7
- dotnet nuget sign - 记录 .NET 7 SDK 对 NuGet 签名包验证的更改
- dotnet nuget 信任 - 记录 .NET 7 SDK 对 NuGet 签名包验证的更改
- dotnet nuget 验证 - 记录 .NET 7 SDK 对 NuGet 签名包验证的更改
- .NET SDK 错误列表
- 向 NETSDK 错误索引添加新错误/警告
- 记录所选 NETSDK 错误消息
- NETSDK 错误消息列表
- NETSDK1100:将 EnableWindowsTargeting 属性设置为 true
- 添加三个新属性
- 记录所选 NETSDK 错误消息
- dotnet-coverage 代码覆盖率实用工具 - 添加新选项和示例方案
- .NET 其他工具概述 - 添加 dotnet-monitor .NET 工具文档
- 诊断客户端库 - 添加 dotnet-monitor .NET 工具文档
- 在容器中收集诊断 - 添加 dotnet-monitor .NET 工具文档
- .NET Core 中提供哪些诊断工具? - 添加 dotnet-monitor .NET 工具文档
- .NET 6+ 中的源生成器诊断 - 为 .NET 7 源生成器添加 SYSLIB 诊断
- .NET 5+ 中已过时的功能
- 添加两个新的 SYSLIB 警告
- XmlSecureResolver 中断性变更
- 添加 SYSLIB0041
- 添加 SYSLIB0040
- 添加 syslib0038 和 syslib0039
- SYSLIB0012:Assembly.CodeBase 和 Assembly.EscapedCodeBase 已过时 - 添加两个新的 SYSLIB 警告
- SYSLIB0043:ECDiffieHellmanPublicKey.ToByteArray 已过时
- XmlSecureResolver 中断性变更
- 添加 SYSLIB0041
- 代码质量规则
- 添加 CA2019 和 CA2259 的文档
- 添加 CA1420 和 CA1422 的文档
- 添加 CA2260 文档
- 添加规则 CA1854 的文档
- 为 CA1851 添加文档
- 可靠性规则 - 添加 CA2019 和 CA2259 的文档
- 用法规则
- 添加 CA2019 和 CA2259 的文档
- 添加 CA2260 文档
- CA1416:验证平台兼容性 - 添加 CA1420 和 CA1422 的文档
- CA1418:验证平台兼容性 - 添加 CA1420 和 CA1422 的文档
- 可移植性和互操作性规则 - 添加 CA1420 和 CA1422 的文档
- 代码样式规则选项 - 添加缺少的代码样式规则
- 表达式级首选项 - 添加缺少的代码样式规则
- 使用本地函数而不是 lambda (IDE0039) - 添加缺少的代码样式规则
- 代码样式规则
- 添加缺少的代码样式规则
- 添加 IDE0160 和 IDE0161。
- 性能规则
- 添加规则 CA1854 的文档
- 为 CA1851 添加文档
- 语言规则
- 添加缺少的代码样式规则
- 添加 IDE0160 和 IDE0161。
- Null 检查首选项 - 添加缺少的代码样式规则
- 模式匹配首选项 - 添加缺少的代码样式规则
- .NET 运行时争用事件 - 使用新版本的 ContentionStart 更新文档
- 包验证返回的错误代码
- 添加用于诊断 CP0012 和 CP0013 的文档
- 添加用于诊断 CP0010 和 CP0011 的文档
- .NET 正则表达式 - 作为 .NET 开发博客的概念文章移植:
Regex
.NET 7 增强功能 - 标准数字格式字符串 - 将精度限制为 999,999,999
- .NET 中的字符编码 - 为 C# 11 的 UTF-8 字符串文本编写内容。
- 在 .NET 中分析数字字符串 - 通用数学文档
- .NET 中的泛 型 - 泛型数学文档
- .NET 中的泛型接口 - 泛型数学文档
- 运行时库概述 - 新
HttpClient
文章 - SDK 样式项目中的目标框架 - 更新 .NET 7 的 TFM
- 平台调用的源生成
- 为 .NET 7 源生成器添加 SYSLIB 诊断
- 自定义封送处理程序教程
- p/invoke 源生成的基本概述
- 教程:在源生成的 P/Invoke 中使用自定义封送 处理程序 - 自定义封送处理程序教程
- 如何在 System.Text.Json 中选择反射或源生成 - STJ 更新的源生成
- 如何在 System.Text.Json 中使用源生成 - STJ 更新的源生成
- 如何在 .NET 中编写用于 JSON 序列化(封送)的自定义转换器
- 在 Utf8JsonReader.CopyString 上添加节
- 添加合同自定义项目
- 如何在 System.Text.Json 中使用 JSON 文档、Utf8JsonReader 和 Utf8JsonWriter - Utf8JsonReader.CopyString 上的 Add 节
- 将 Newtonsoft.Json 与 System.Text.Json 进行比较,并迁移到 System.Text.Json - 添加协定自定义一文
- 如何在 System.Text.Json 中保留引用并处理或忽略循环引用 - 添加协定自定义一文
- 如何使用 System.Text.Json 来序列化派生类的属性 -
System.Text.Json
.NET 7 的多形性更新
.NET IoT 库
更新的文章
- 从模数转换器读取值 - 停用“C# 8 中的新增功能”一文
- 闪烁 LED - 停用“C# 8 中的新增功能”一文
- 在 LCD 上显示文本 - 停用“C# 8 中的新增功能”一文
- 从传感器读取环境条件 - 停用“C# 8 中的新增功能”一文
体系结构指南
新文章
- 访问远程数据
- 身份验证和授权
- 松散耦合组件之间的通信
- 配置管理
- 依赖关系注入
- 使用 .NET MAUI 的企业应用程序模式
- .NET MAUI 简介
- 容器化微服务
- 模型-视图-视图模型 (MVVM)
- 导航
- 用途
- 单元测试
- 验证
更新的文章
- .NET 应用程序体系结构文档 - .NET MAUI 电子书
以上是关于.NET 7 中的新增功能的主要内容,如果未能解决你的问题,请参考以下文章
.NET 7 新增速率限制 (Rate Limiting) 功能,轻松限制请求数量
无法加载协定为“NM3.IClrService”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分