.NET 9 中的新增功能

科技   2024-11-13 08:56   上海  

.net9 已经在昨天发布了,.NET 9 是 .NET 8 的继任者,特别关注云原生应用程序和性能。它将作为标准期限支持 (STS) 版本获得 18 个月的支持。您可以在此处下载 .NET 9

工程团队是 .NET 9 的新增功能,在 GitHub Discussions 上发布 .NET 9 预览版更新。这是提出问题和提供有关版本的反馈的好地方。

.NET 运行时

.NET 9 运行时包括具有修整支持的功能开关的新属性模型。新属性可以定义库可用于切换功能区域的功能开关。

垃圾回收包括默认使用的动态适应应用程序大小功能,而不是 Server GC。

运行时还包括许多性能改进,包括循环优化、内联以及 Arm64 矢量化和代码生成。

有关详细信息,请参阅 .NET 9 运行时中的新增功能。

.NET 库

System.Text.Json 添加了对可为 null 的引用类型注释和从类型导出 JSON 架构的支持。它添加了新选项,允许您自定义写入 JSON 的缩进,并从单个流中读取多个根级 JSON 值。

在 LINQ 中,新方法 CountBy 和 AggregateBy 可以按键聚合状态,而无需通过 GroupBy 分配中间分组。

对于集合类型,System.Collections.Generic.PriorityQueue<TElement> 类型包括一个新的 Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>) 方法,您可以使用该方法更新队列中项目的优先级。

对于加密,.NET 9 在 CryptographicOperations 类型上添加了一种新的一次性哈希方法。它还添加了使用 KMAC 算法的新类。

对于反射,新的 PersistedAssemblyBuilder 类型允许您保存发出的程序集。这个新类还包括 PDB 支持,这意味着您可以发出符号信息并使用它来调试生成的程序集。

TimeSpan 类包含一些新方法,这些方法允许您从 (而不是 ) 创建对象。这些方法有助于避免浮点计算中固有的不精确性导致的错误。From*TimeSpanintdouble

有关详细信息,请参阅 .NET 9 库中的新增功能。

.NET 开发工具包

.NET 9 SDK 引入了工作负载集,其中所有工作负载都保留在单个特定版本,直到显式更新。对于工具,dotnet tool install 的新选项允许用户(而不是工具作者)决定是否允许工具在比工具目标版本更新的 .NET 运行时版本上运行。另外:

  • 单元测试具有更好的 MSBuild 集成,允许您并行运行测试。

  • 默认情况下,NuGet 安全审核在直接和可传递包引用上运行。

  • 终端记录器默认启用,并且可用性也有所提高。例如,现在在构建结束时汇总了失败和警告的总数。

  • 新的 MSBuild 脚本分析器(“生成检查”)可用。

  • SDK 可以检测并调整 .NET SDK 和 MSBuild 之间的版本不匹配。

  • 该命令显示当前 .NET SDK 安装的工作负载安装和修改的历史记录。dotnet workload history

有关详细信息,请参阅适用于 .NET 9 的 SDK 中的新增功能。

AI 构建

.NET 9 通过 Microsoft.Extensions.AI 和 Microsoft.Extensions.VectorData 包引入了统一的 C# 抽象层。这些抽象有助于与 AI 服务交互,包括小型和大型语言模型(SLM 和 LLM)、嵌入、矢量存储和中间件。

.NET 9 还包括扩展 AI 功能的新张量类型。TensorPrimitives 和新的 Tensor<T> 类型通过实现多维数据的高效编码、操作和计算来扩展 AI 功能。您可以在最新版本的 System.Numerics.Tensors 包中找到这些类型。

TensorPrimitives

  • 扩展了方法范围:从 40 个重载增加到近 200 个重载,现在包括类似于 、 和 但值的跨度的数值运算。MathMathFINumber<T>

  • 性能增强:许多操作现在都经过 SIMD 优化,以获得更好的性能。

  • 泛型重载:支持实现特定接口的任何类型的内容,扩展到 .NET 中浮点值的跨度之外。T

Tensor<T>

  • 构建在 之上,以实现高效的数学运算。TensorPrimitives

  • 尽可能使用零副本提供与 AI 库(ML.NET、TorchSharp、ONNX 运行时)的高效互操作。

  • 通过索引和切片操作实现简单高效的数据操作。

ML.NET

ML.NET 是一个开源的跨平台框架,支持将自定义机器学习模型集成到 .NET 应用程序中。

ML.NET 4.0 带来了以下改进:

  • 以编程方式配置选项的新方法。MLContext

  • 将 ONNX 模型加载为 .Stream

  • DataFrame 改进。

  • 分词器的新功能。

  • (实验性)Llama 和 Phi 系列模型的 TorchSharp 端口。

  • (实验性)CausalLM 管道 API。

有关更多信息,请参阅 ML.NET 中的新增功能。

Tokenizers

Microsoft.ML.Tokenizers 库为 .NET 开发人员提供了将文本编码和解码为令牌的功能。对于 AI 场景,这对于在使用本地模型时管理上下文、计算成本和预处理文本非常重要。

最新版本为 tokenizer 引入了重要的新功能:

  • Tiktoken 用于 GPT(3、3.5、4、4o、o1)和 Llam3 模型

  • Llama (基于 SentencePiece) 用于 Llama 和 Mistral 模型

  • CodeGen 用于代码生成模型,如 codegen-350M-mono

  • Phi2(基于 CodeGen)适用于 Microsoft Phi2 模型

  • WordPiece (英文)

  • Bert(基于 WordPiece)用于 Bert 支持的模型,如 optimum--all-MiniLM-L6-v2

.NET Aspire

.NET Aspire 是一组功能强大的工具、模板和包,用于构建可观察的生产就绪应用程序。.NET Aspire 的最新版本包括对仪表板和资源生命周期管理的改进。它还添加了新的集成和 API,以便在开发过程中提供更大的灵活性。.NET Aspire 9 适用于 .NET 9 和 .NET 8 应用程序。有关详细信息,请参阅 .NET Aspire 9 中的新增功能。

ASP.NET Core

默认情况下,使用 .NET 9 构建的 ASP.NET Core 应用程序是安全的,扩展了对预先复杂性的支持,并改进了监视和跟踪。通过性能改进,您将看到更高的吞吐量和更快的启动时间,并且内存使用量更少。.NET 9 中的 ASP.NET Core 包括:

  • 通过自动指纹版本控制,优化了在构建和发布时对静态文件(如 JavaScript 和 CSS)的处理。

  • Blazor:新的混合和 Web 应用程序模板、组件呈现模式检测、服务器呈现的新重新连接体验。

  • API:内置对使用 生成 OpenAPI 文档的支持,增强了本机 AOT 支持。Microsoft.AspNetCore.OpenAPI

  • 通过用于身份验证和授权的新 API 提高了安全性。

  • 在 Linux 上更轻松地设置受信任的开发证书,以便在开发过程中启用 HTTPS。

这些只是 .NET 9 中的一些功能和增强功能。有关详细信息,请参阅 ASP.NET Core 9.0 中的新增功能。

.NET MAUI

.NET 9 中 .NET 多平台应用 UI (.NET MAUI) 的重点是增强的性能和可靠性,以及更深入的桌面和移动应用程序集成。.NET MAUI 包括适用于 iOS 和 Mac Catalyst 的 CollectionView 和 CarouselView 的全新、性能更高的实现、对现有控件的更新、新的应用程序生命周期事件以及本机 AOT 和修剪增强功能,以改进应用程序大小和启动时间。另外:

  • 新的 TitleBar 桌面控件可用于 Windows。

  • 新的 HybridWebView 控件可以更轻松地包含来自 ReactJS、Vue.js 和 Angular 等框架的支持 JavaScript 的内容。

  • Entry 现在支持其他键盘模式。

  • 控件处理程序会在可能的情况下自动断开与其控件的连接。

  • MainPage 已弃用,取而代之的是通过重写 Application.CreateWindow(IActivationState) 类来设置应用程序的主页。

有关这些新功能等的详细信息,请参阅适用于 .NET 9 的 .NET MAUI 中的新增功能。

EF Core

Entity Framework Core 包括对 Azure Cosmos DB for NoSQL 数据库提供程序的重大更新。它还包括一些 AOT 编译和预编译查询的步骤,以及其他改进。有关详细信息,请参阅 EF Core 9 中的新增功能。

C# 13

C# 13 附带了 .NET 9 SDK,并包括以下新功能:

  • params收集

  • 新类型和语义lock

  • 新的转义序列 -\e

  • 方法组自然类型改进

  • 对象初始值设定项中的隐式索引器访问

  • 在迭代器和异步方法中启用 locals 和 contextrefunsafe

  • 使类型能够实现接口ref struct

  • 允许 ref struct 类型作为泛型中类型参数的参数。

  • 现在允许在类型中使用部分属性和索引器。partial

  • 重载解决优先级允许库作者将一个重载指定为比其他重载更好。

有关详细信息,请参阅 C# 13 中的新增功能。

F# 9

F# 9 附带了 .NET 9 SDK,并包括以下新功能:

  • 可为 null 的引用类型

  • 可区分联合 .Is* 属性

  • 部分活动模式可以返回 bool 而不是 unit 选项

  • 提供参数时,首选扩展方法而不是内部属性

  • 空体计算表达式

  • 允许 Hash 指令采用非字符串参数

  • 扩展了 fsi 中的 #help 指令,以在读取-评估-打印循环 (REPL) 中显示文档

  • 允许 #nowarn 在错误代码上支持 FS 前缀以禁用警告

  • 有关非递归函数或 let 绑定值的 TailCall 属性的警告

  • 强制实施属性目标

  • 集合的随机函数

  • C# 集合表达式对 F# 列表和集的支持

  • 各种开发人员的工作效率、性能和工具改进

有关更多信息,请参见 F# 9 中的新增功能。

Windows Presentation Foundation

.NET 9 中的 WPF 为构建现代应用程序提供了增强的支持,具有多个主题增强功能等:

  • 支持 Windows Fluent 主题。

  • 添加了对 Windows 浅色和深色模式的主题支持。

  • 主题现在支持 Windows 主题色。

  • 字体渲染已得到改进,可支持基于连字符的连字。

  • BinaryFormatter不再受支持。

有关详细信息,请参阅 WPF for .NET 9 中的新增功能。

Windows Forms

.NET 9 中的 WinForms 带来了对新主题的支持、异步开发的增强功能等:

  • Form和 Support now。(实验性功能)TaskDialogShowDialogAsync

  • BinaryFormatter不再受支持。

  • 对在深色模式下渲染应用程序的实验性支持,如 Windows 所支持的那样。

  • FolderBrowserDialog并有一些小的改进。ToolStrip

  • System.Drawing 库进行了许多改进,包括包装 GDI+ 效果、对 的支持以及更好的互操作代码生成。


架构师老卢
资深软件架构师, 分享编程、软件设计经验, 教授前沿技术, 分享技术资源(每天发布电子书),每天进步一点点...
 最新文章