.NET 7 中的新增功能

.NET 7 是 .NET 6 的后续版本,侧重于统一、新式、简单和 快速。 .NET 7 将作为标准期限支持 18 个月 , (STS) 版本 (以前称为 当前 版本) 。

本文列出了 .NET 7 的新功能,并提供了指向每个功能的详细信息的链接。

若要查找已针对 .NET 7 更新的所有 .NET 文章,请参阅 .NET 文档:.NET 7 版本的新增功能

 .NET 7 中的新增功能_第1张图片

 

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 的跨度。 已添加以下新方法作为此支持的一部分:

    • Regex.EnumerateMatches
    • Regex.Count
    • Regex.IsMatch(ReadOnlySpan) (和其他一些重载)

有关这些改进和其他改进的详细信息,请参阅 .NET 7 中的正则表达式改进 博客文章。

System.Text.Json 序列化

.NET 7 在以下方面包括对 System.Text.Json 序列化的改进:

  • 通过协定自定义 ,可以更好地控制如何序列化和反序列化类型。 有关详细信息,请参阅 自定义 JSON 协定。
  • 用户定义的类型层次结构的多态序列化。 有关详细信息,请参阅序列化派生类的属性。
  • 支持 必需成员,这些成员是 JSON 有效负载中必须存在的属性,才能成功反序列化。 有关详细信息,请参阅必需属性。

有关这些更新和其他更新的信息,请参阅 . NET 7 中 System.Text.Json 中的新增功能 博客文章。

.NET 7 中的新增功能_第2张图片

 

.NET 7 版本的 .NET 文档中的新增功能。 本文列出了与 .NET 功能更新相关的文档的一些主要更改。

.NET 中断性变更

  • .NET 7 中的中断性变更

.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