码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • .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 的跨度。 已添加以下新方法作为此支持的一部分:

      • 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 版本的 .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