.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*
TimeSpan
int
double
有关详细信息,请参阅 .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 个重载,现在包括类似于 、 和 但值的跨度的数值运算。
Math
MathF
INumber<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 和 context
ref
unsafe
使类型能够实现接口
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。(实验性功能)TaskDialog
ShowDialogAsync
BinaryFormatter
不再受支持。对在深色模式下渲染应用程序的实验性支持,如 Windows 所支持的那样。
FolderBrowserDialog
并有一些小的改进。ToolStrip
System.Drawing 库进行了许多改进,包括包装 GDI+ 效果、对 的支持以及更好的互操作代码生成。