本文由ai助力翻譯,站長校驗。
今日,我們滿懷激動地宣布,.net 9正式發布了!這是.net迄今為止生產力最高、最現代化、最安全、最智能且性能最強的版本。它凝聚著全球數千名開發者又一年的心血,此次新版本包含了數千項性能、安全以及功能方面的改進。你會發現,從程式語言、開發工具到工作負載,整個.net技術棧都有了全方位的增強,讓你能夠基於統一平台進行開發,並輕鬆地為應用注入人工智慧元素。

net 9的下載資源,以及針對visual studio 2022和適用於visual studio code的c#開發工具包的更新版本,現在均已開放獲取。
.NET团队、合作伙伴以及.NET社区将在.NET Conf 2024(为期三天的免费线上开发者活动,举办时间为11月12日至14日)上展示.NET 9的新特性,并深入剖析各项功能。快来加入我们吧!
下面讓我們一同來看看.net在開發語言、工作負載以及工具方面的亮點內容。
無與倫比的性能--應用運行更快,內存占用更低
.NET 9是.NET至今性能最强的版本,运行时、工作负载以及语言层面共有超过1000项与性能相关的变更,其采用的更高效算法能够生成更优质的代码。斯蒂芬·图布(Stephen Toub)对.NET 9性能改进内容进行了深入剖析,那是一篇必读文章,不过在此我们还是先来讨论一下该版本中的部分亮点。
伺服器垃圾回收(server gc)機制進行了重大調整,它將依據應用的內存需求進行自適應調節,而不再取決於環境(機器、虛擬機或容器)中可用的資源(內存和cpu)。這種調整方式在多核環境下影響深遠,特別是在應用內存較小或者隨時間變化幅度較大的情況下。在此之前,工作站(workstation)和伺服器垃圾回收機制的實現會產生截然不同的結果,用戶需要在二者之間權衡抉擇。對於那些使用工作站垃圾回收機制來控制雲應用內存使用的用戶來說,此次調整應該頗具吸引力。內存方面的優化可能會帶來一定的吞吐量成本,但這一成本或許並不明顯。伺服器垃圾回收機制可配置為使用舊版實現,這在測試時可能會派上用場。
techempower基準測試在.net 9面前也相形見絀,.net 9實現了更高的吞吐量,同時內存使用量大幅下降。內存使用量下降得益於伺服器垃圾回收機制的變更。

运行时重新引入了向量化,增加了对新芯片架构的支持,涵盖了Arm64可伸缩向量扩展(SVE)、英特尔高级矢量扩展10(AVX10),并对运行时进行了硬件加速。RyuJIT提升了Arm64、循环、基于配置文件引导的优化(PGO)以及边界检查等方面的性能。得益于采用了原生提前编译(Native AOT)所使用的异常模型,异常处理速度提升了50%。
动态的基于配置文件引导的优化(PGO)已更新,能够对更多代码模式进行优化。现在,即时编译器(JIT)会为应用中常见以及未曾出现过的类型转换生成快速路径代码。像(IFoo)myFoo和myFoo is IFoo这类类型转换在C#中极为常见。此外,对于所观察到的常见缓冲区长度,它还能够展开并向量化对缓冲区执行的部分操作。尽管这一变更需要禁用“ReadyToRun”功能,但能使执行速度提高70%。
LINQ在多种常见场景下也进行了优化。当基础数组、集合或者可枚举对象为空时,诸如Take和DefaultIfEmpty这类方法的返回速度如今可提升多达10倍。Enumerable.SequenceEqual方法已经针对数组输入进行了特殊处理,它会将操作委托给MemoryExtensions.SequenceEquals方法,通过将数组作为 spans 传递,实现高效迭代和向量化操作。现在,List<T>也具备了这一能力。
System.Text.Json的底层细节得到了显著优化,各项操作的性能提升幅度超过50%。JsonProperty.WriteTo方法现在能够直接写入UTF8字节,从而避免了字符串分配操作。新的JsonMarshal.GetRawUtf8Value应用程序编程接口(API)会返回UTF8字节,作为JsonElement.GetRawText(返回字符串且需要编码和分配内存)的替代方案。如果能从给定的可枚举对象中获取元素数量,JsonObject现在可以正确设定其底层支持存储的大小,从而避免分配内存以及调整大小所产生的成本。
除了這些對.net的基礎性改進之外,你會發現所有類型應用的性能均有所增強,不妨繼續往下閱讀以了解更多詳情。
net aspire--構建更優應用的基礎組件
.NET Aspire是一组功能强大的工具、模板以及软件包,旨在助力无缝开发可观测且可用于生产环境的应用程序。距离.NET Aspire首次发布仅仅过去了六个月,我们已经对整个技术栈的各个部分进行了改进,从遥测和指标仪表板中的新特性,到云应用更精简的部署流程,都有涉及。看到各类应用纷纷采用.NET Aspire,以及社区根据自身场景接纳相关集成与工具,着实令人欣喜。此外,我们看到微软内部也有大量应用采用了这一技术,例如Xbox团队和Copilot团队都已将.NET Aspire集成到现有服务中,借助易于获取的洞察信息以及各种兼容的Azure集成,进一步优化了内部开发流程。

此次发布的.NET Aspire 9带来了一些大家呼声很高的功能,可助力简化应用开发流程。现在,你能够通过仪表板启动和停止资源,在调试会话之间保持容器处于运行状态,还可以访问包括WaitFor在内的新API,以便更好地管理资源启动过程。我们与社区紧密合作,为OpenAI、Ollama、Milvus等众多平台推出了全新的无缝集成功能。我们简化了获取.NET Aspire的流程,使其更易于融入应用当中,同时改进了与Azure容器应用相关的部署场景,并且很高兴地宣布,现已为Azure函数提供.NET Aspire预览版支持。

.NET Aspire还有诸多内容等待你去探索,涵盖了从工具到更广泛的生态系统,比如全新的.NET Aspire社区工具包。如果你打算开始使用.NET Aspire,不妨看看我们在微软学习平台(Microsoft Learn)上提供的免费课程以及新的.NET Aspire认证,它们将助力你开启.NET Aspire之旅。当然,也请让我们知晓你对.NET Aspire的看法,你可以通过GitHub、.NET Discord或者我们的直播流反馈给我们。
人工智慧--蓬勃發展的人工智慧生態系統
我們持續拓展.net在構建以及為應用注入人工智慧方面的能力。現在有了新的學習資料和示例,與生態系統的集成也更加簡化,通過與合作夥伴協作打造出了充滿活力的人工智慧社區,而且將人工智慧解決方案部署到雲端也變得前所未有的順暢。各行各業的眾多公司都已採用.net來為客戶打造一流的人工智慧體驗,其中包括h&r block、blip以及畢馬威(kpmg)等。你所喜愛的編碼助手github copilot就是由.net驅動的,而全新的微軟copilot體驗也是基於.net全新構建的。
在開發人工智慧服務和應用時,開發者能夠獲取最新進展至關重要。正因如此,我們與azure、openai、llamaindex、qdrant、pinecone、milvus、autogen、ollamasharp、onnx runtime等眾多人工智慧生態系統中的合作夥伴攜手合作,為.net開發者提供了一系列強大的功能選項。

我們還通過與社區以及控制項供應商合作夥伴共同構建智能組件生態系統,讓將融入人工智慧的控制項集成到.net應用中變得更加容易。
net的人工智慧構建模塊
一个强大的生态系统意味着开发者在选择最适合自身场景的方案时,拥有了比以往更多的选择。我们思考了如何简化这些集成流程,并消除因生态系统中应用程序编程接口(API)和功能数量不断增长所带来的准入障碍。为此,我们与语义内核(Semantic Kernel)展开合作,在Microsoft.Extensions.AI和Microsoft.Extensions.VectorData项目下,为.NET生态系统引入了一组抽象概念,它们为与人工智能服务(例如小型和大型语言模型、嵌入向量、向量存储以及中间件)进行交互提供了统一的C#抽象层。这种简化后的新方法已经在早期采用者(如Pieces和OllamaSharp)那里取得了良好的成效。

tensors和tokenizers
Microsoft.Extensions.AI和VectorData只是我们在.NET 9中所提供构建模块的一部分,我们还对相关库和基础数据类型进行了重大改进,以推动人工智能开发。Microsoft.ML.Tokenizers针对包括GPT(4、o1等)、Llama、Phi以及Bert在内的热门模型系列,在分词器方面进行了改进,此外还新增了对字节级字节对编码(Byte-Level BPE)、SentencePiece以及WordPiece等分词算法的支持。
随着语言模型即服务的出现,开发者使用人工智能的门槛大幅降低。Tensor<T>也为人工智能开发带来了助力,它作为一种新的数据类型,可用于表示多维数据,从而简化了库之间的交互操作以及相关运算的应用。
我們迫不及待地想看看你利用這些新的構建模塊集成功能能夠創造出什麼樣的成果。若想快速上手,可以瀏覽我們為.net提供的人工智慧文檔以及示例代碼。
面向.net開發者的github copilot增強功能
GitHub Copilot通过在编辑器体验方面提供更优质的结果,并在.NET开发者的常规工作流程中提供人工智能辅助,从而提升了开发效率。随着Visual Studio和Visual Studio Code的最新版本发布以及GitHub Copilot的更新,这一体验变得更加出色。开启Copilot后,集成开发环境(IDE)中处处融入了人工智能,可在开发者生命周期的各个环节(从编写代码、编写测试到调试应用)为你提供帮助。以下是在最新版本中你可以期待的部分功能:
- 人工智慧智能變量檢查:通過集成人工智慧變量檢查功能,優化調試工作流程。
- 人工智慧驅動的可枚舉對象可視化工具:在可枚舉對象可視化工具中提供人工智慧驅動的可編輯語言集成查詢(linq)表達式。
- 藉助github copilot修復代碼:github copilot能夠協助你解決代碼問題。
- 針對c#的更優人工智慧補全功能:github copilot會從相關源文件中引入更多上下文信息,以改進c#代碼的補全效果。
- 藉助github copilot調試測試:通過使用“藉助github copilot調試測試”功能,獲取調試失敗測試的幫助。
使用asp.net core和blazor進行全棧式web開發
ASP.NET Core是我们用于.NET的全栈式Web框架,提供了构建现代化Web应用以及可扩展后端服务所需的一切功能。.NET增添了众多新特性,在性能、可访问性以及安全性方面均有显著改进。使用.NET 9构建的ASP.NET Core应用默认具备安全性,对提前编译(AOT)的支持得到了扩展,监控和跟踪功能也有所改善,再加上内置的性能提升,应用将实现更高的吞吐量、更快的启动时间,并且内存使用量更低。

asp.net core中靜態文件的優化處理
靜態web資源(如javascript和css文件)幾乎是每個web應用的組成部分。. net 9中的asp.net core現在會在構建和發布過程中對這些文件進行優化,以實現高效部署。在構建階段,asp.net core會識別所有靜態web資源,並通過在文件名中添加基於內容的哈希值來生成帶有指紋標識的文件版本。這種指紋機制確保了文件名的唯一性,避免使用舊版本文件,並能讓文件得以積極緩存。在應用發布時,這些文件還會使用brotli算法進行預壓縮,這極大地減小了文件下載大小,同時減輕了伺服器的壓縮工作負擔。運行時會通過端點路由來處理這些文件,這意味著你現在可以針對靜態文件使用其他具備端點感知能力的功能,例如按端點進行授權。
net 9中blazor的改進
在.net 9中,blazor的功能比以往更強大,能夠助力你構建美觀的現代化web及混合應用程式。此次發布為blazor的各個方面都帶來了性能提升,新增了blazor混合應用和web應用模板,還為開發者提供了新的應用程式編程接口(api),以便打造令人滿意的用戶體驗。
Blazor现在能够在运行时通过新的RendererInfo应用程序编程接口(API)检测组件的渲染模式,并相应地调整组件渲染方式。在预渲染期间,你可以禁用或隐藏交互元素,待组件具备交互性后再启用它们。
示例代碼如下:
@if (RendererInfo.IsInteractive)
{
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
}
else
{
<p>One moment, please</p>
}
使用交互式伺服器端渲染(blazor server)的blazor應用會受益於全新的重新連接體驗,其用戶界面更加友好,能夠更快地重新連接到伺服器,並且在用戶連接丟失時會自動處理頁面重新加載操作。
asp.net core中openapi的增強功能
全球范围内,众多大规模服务都是基于使用ASP.NET Core构建的应用程序编程接口(API),并且我们在每一次发布时都会持续改进构建这些API的体验。对于API开发者来说,.NET 9中的一大亮点是通过Microsoft.AspNetCore.OpenAPI软件包新增了对OpenAPI文档生成的内置支持。元数据会自动从应用代码、属性以及扩展方法中提取出来。之后,还可以使用针对操作、模式或者整个文档进行操作的转换器,对文档做进一步定制。在最小化API应用中,该功能对原生提前编译(Native AOT)友好,使你能够针对最佳性能对应用进行优化。除此之外,OpenAPI文档可以在构建时生成,并集成到利用OpenAPI工具的本地开发工作流程以及构建管道当中。

asp.net core中安全性的改進
安全性依舊是asp.net core的核心關注點,你會發現多項改進措施,有助於確保應用默認具備安全性。現在,在linux系統上設置受信任的開發證書變得更加容易,便於在開發過程中啟用超文本傳輸安全協議(https)。blazor現在內置了用於將認證狀態傳遞到客戶端的應用程式編程接口(api),還支持為oauth和開放id連接(oidc)授權請求添加額外參數,並提供了對推送授權請求(par)的支持。最後,我們強化了asp.net core的數據保護功能,並改進了kestrel的連接指標,以便更輕鬆地檢測連接失敗的原因。

net maui--增強多平台應用開發
.NET MAUI是使用.NET跨移动端和桌面端构建多平台应用的绝佳方式。它除了提供统一的抽象层,能通过单一应用程序编程接口(API)访问原生功能,并基于单一代码库创建出色的跨平台用户界面外,还包含了基于.NET访问原生API来构建适用于安卓(Android)、苹果iOS、苹果macOS以及Windows系统应用的基础功能。进入.NET 9阶段,.NET MAUI的首要目标就是提升质量和可靠性,以便你能更轻松地将应用投入生产环境。过去一年里,我们看到在谷歌应用商店(Google Play Store)中,使用.NET MAUI构建的应用数量增加了一倍多,开发者的使用率增长超过30%,达到历史最高水平,而且社区的参与度和贡献也十分惊人。

最近,我们欢迎Syncfusion(.NET生态系统中领先的组件供应商)为.NET MAUI做出贡献。自今年7月至9月,Syncfusion开始为.NET MAUI贡献代码以来,其贡献量占社区总贡献量的比例超过了55%,与前三个月相比,增长了557%,这得益于其原本就非常出色的贡献成果。在.NET 9中,我们将社区放在核心位置,引入了一个全新的项目模板,其中包含14个免费且开源的Syncfusion控件以及来自社区的其他热门库,展示了针对模型 - 视图 - 视图模型(MVVM)、数据库访问、导航、视图刷新以及其他常见应用模式的推荐实践方法。你可以利用这个模板快速开启应用开发之旅。

我们一直倾听开发者的心声,.NET 9为桌面端和移动端应用带来了性能提升、可靠性增强以及更深入的集成功能。你会发现.NET MAUI在各方面都有显著的性能改进,包括针对iOS和Mac Catalyst系统的CollectionView(集合视图)与CarouselView(轮播视图)的全新实现,对现有控件和应用生命周期的更新,以及原生提前编译(Native AOT)和剪裁功能的增强,这些都有助于你构建体积更小、运行速度更快的应用。除了支持最新的iOS、macOS和安卓操作系统外,我们在.NET 9中还新增了多项原生平台功能,例如安卓资源包(Android Asset Packs)、与原生库交互的改进,以及通过新的Xcode Sync dotnet工具实现Xcode与Visual Studio Code之间更流畅的集成。

.NET 9中的.NET MAUI有诸多值得喜爱和探索的内容。一定要仔细查看新特性文档,并尝试使用新的项目模板哦。
使用.net 9進行windows開發
借助.NET 9,你的Windows应用将能够使用最新的操作系统特性和功能,同时确保它们比以往任何时候都更具性能且更易于访问。无论你是使用WinUI 3和Windows应用软件开发工具包(Windows App SDK)来开发新的现代化应用,还是对现有的Windows Presentation Foundation(WPF)以及Windows Forms应用进行现代化改造,你的Windows应用在.NET 9上都能实现最佳运行效果。我们一直与Windows开发者社区紧密合作,带来了大家一直期待的功能。这其中包括为WinUI 3提供原生提前编译(Native AOT)支持,以打造体积更小且性能更优的应用;为WPF引入流畅用户界面(Fluent UI)相关的现代化主题增强功能;为WinForms增添了暗黑模式、现代化图标应用程序编程接口(API),并通过Control.InvokeAsync改进了异步API访问功能。

在.NET 9中针对Windows开发还有很多内容值得探索,所以一定要仔细阅读WinUI 3、WPF以及WinForms的新特性文档。
c#和f#--你喜愛的程式語言變得更加出色
C#是全球最受欢迎的编程语言之一。在C# 13版本中,我们着重关注了一些特性,它们能让你以熟悉且喜爱的编程风格更轻松、更安全、更快速地编写代码。在方法签名中使用params修饰符的功能在C# 13中通过新增的集合表达式得到了增强。这意味着你不再局限于将params与数组类型搭配使用,而是可以使用任何受支持的集合类型了。
C# 13通过引入使用ref struct值的新方式解锁了更多高性能代码,并且借助System.Threading.Lock让处理多线程应用变得更加容易。
示例代碼如下:
Lock myLock = new();
void Concat<T>(params List<T> items)
{
lock (myLock)
Console.WriteLine(string.Join("\e[1mItem: \e[0m", items));
}
F#一如既往地为.NET开发者提供优质的函数式编程体验。F# 9带来了各种语言、库以及工具方面的增强功能,旨在让你的程序更安全、更具弹性且性能更佳。可空引用类型为与C#库的交互带来了类型安全性,优化后的整数范围加速了循环和其他推导式的执行速度,优化后的相等性检查避免了装箱操作,并提升了许多常见操作的性能。区分联合类型会自动生成.Is*属性,便于快速进行情况测试。标准库现在包含了针对集合的随机函数,这在数据科学和游戏开发中非常实用。开发者的工作效率也因诊断功能、解析器恢复以及各种工具改进而得到了提升。
示例代碼如下:
// FS3261: 空值警告:类型'string' 和'string | null' 的可空性不一致。
let methodArgument (s: string | null) = File.Create s
let matchNullableString(s: string | null) =
match s with // `s` 是 string | null 类型
| null -> 0
| notNull -> notNull.Length // `notNull` 是 string 类型
还有很多精彩特性等着你去发现,所以一定要浏览C# 13新特性文档以及F# 9新特性文档哦。如果你刚开始踏上C#开发之旅,不妨查看一下与freeCodeCamp合作推出的基础C#认证。
全球頂尖的開發者工具
伴随.NET 9的发布,我们的开发者工具也进行了更新,这将使你的开发效率达到前所未有的高度。首先,Visual Studio 2022 17.12版本的发布为开发者工作流程的各个方面都带来了一系列效率提升,包括显著的性能增强、更出色的调试与诊断体验、与.NET Aspire更紧密的集成、更深入的云集成、对C# 13的分析器支持、增强的Git支持等等!实际上,此次Visual Studio 2022版本所包含的用户期待功能比以往任何时候都要多。这个版本中总有适合你的功能,相信你一定会喜欢它的。
适用于Visual Studio Code的C#开发工具包也在持续演进,编辑可靠性得到了提高,NuGet包管理功能有所增强,测试适配器和代码覆盖率结果更优,对.NET MAUI开发的支持也得到了改进,项目启动/调试配置也进行了升级。立即下载最新版本的Visual Studio 2022和适用于Visual Studio Code的C#开发工具包,让你的开发工作流程从中受益并得到改进吧。
我们知道开发者喜爱命令行界面(CLI),因此我们一直在努力改善.NET CLI的使用体验,并助力其成为安全开发方法的一部分。在.NET 9中,我们对终端日志记录器进行了全面改进,包括添加可点击链接、时长计时器、颜色编码等等。日志记录器的输出更加简洁,而且现在在构建结束时你会看到失败和警告总数的汇总信息,使其比以往更具实用性。dotnet restore命令也已更新,能够审核顶级和传递依赖项是否存在软件包漏洞。这一功能与集中式软件包管理配合默契,使你能够快速将软件包升级部署到代码仓库内的所有项目中。dotnet restore会在终端、Visual Studio以及持续集成/持续交付(CI/CD)管道中基于GitHub安全公告数据库中的软件包漏洞信息向你发出提醒。

.NET软件开发工具包(SDK)中还有很多你会喜欢的内容,所以一定要仔细阅读新特性文档哦。
蓬勃發展的創作者與貢獻者社區
我们热爱出色的.NET社区,没有你们的支持和贡献,就不会有.NET 9的诞生。我们收到了来自9000多名社区成员的超过26000次贡献!感谢你们提出的每一个问题、每一条评论、每一次代码审查以及每一个拉取请求,正是你们的付出,才让这个版本成为.NET迄今为止最优秀的版本。我们也很欣慰看到大家对.NET的喜爱,在今年的Stack Overflow开发者调查中,.NET与ASP.NET Core一同被评为最受推崇的框架,C#也被列为顶尖的Web框架和编程语言之一。感谢你们助力构建了这个令人惊叹的全球开发者社区。

感谢所有帮助.NET生态系统蓬勃发展的库创建者,是你们让NuGet成为了每年增长速度最快的软件包生态系统。如今,.NET开发者可以使用的软件包已超过42万个,它们的下载次数总计超过5700亿次,这一数字令人惊叹。我们正在大力投入,不断完善NuGet,添加开发者喜爱的功能,并努力使其成为全球最安全的软件包生态系统。

NuGet为整个生态系统中的库创建者和使用者都带来了重大改进。NuGet.org网站焕然一新,现在支持暗黑模式,还与GitHub合作,为Dependabot添加了原生NuGet支持,支持通过开源安全基金会(OpenSSF)实现开源计分卡和固定依赖项功能,并增强了与deps.dev的集成,以便更深入地了解项目中的依赖关系。
立即使用.net 9開啟開發之旅
现在就加入我们在.NET Conf的线上直播活动吧,聆听.NET团队成员现场讲解最新的增强功能。
net 9的下載資源以及針對visual studio 2022和適用於visual studio code的c#開發工具包的更新版本現在均已開放獲取。
想要深入了解本版本中各個部分的新特性,可以查看.net 9各部分的最新文檔:
- .NET 9新特性:运行时、库以及软件开发工具包(SDK)
- C# 13新特性
- F# 9新特性
- ASP.NET Core新特性
- .NET Aspire新特性
- .NET MAUI新特性
- 实体框架核心(EF Core)新特性
- Windows Presentation Foundation(WPF)新特性
- Windows Forms新特性
此外,在接下來的幾個月里,我們還會發布關於.net 9中涵蓋語言、工作負載以及工具等各方面新特性的深度剖析博客文章,所以一定要訂閱.net博客,這樣當新文章發布時你就能及時收到通知啦。
我們迫不及待地想看看你使用.net 9開發出什麼樣的成果呢。