.NET 6 预览版 7:新功能已完成 ,将专注于改进
.NET 團(tuán)隊(duì)的項(xiàng)目經(jīng)理 Richard Lander在宣布 .NET 6 Preview 7 時(shí)說:“這是 .NET 預(yù)覽的又一季的結(jié)束?!? 中文翻譯:.NET 6 預(yù)覽版 7 發(fā)布——最后一個(gè)預(yù)覽版。.NET 6.0 是微軟統(tǒng)一 .NET 平臺(tái)的一個(gè)重要版本和第一個(gè) LTS(長(zhǎng)期支持)迭代,旨在取代 .NET Framework(現(xiàn)在是舊版)和 .NET Core。最新的預(yù)覽版附帶了大量信息,包括 Visual Studio 2022 預(yù)覽版 3、.NET MAUI(多平臺(tái)應(yīng)用程序 UI)預(yù)覽版 7——它取代了跨平臺(tái)移動(dòng)項(xiàng)目的 Xamarin——以及對(duì) ASP.NET Core 的更新。
Richard Lander 說新功能基本上都已經(jīng)完成,開發(fā)團(tuán)隊(duì)現(xiàn)在專注于改進(jìn),因?yàn)樗鉀Q了兩個(gè)可能在 11 月全面上市之前用于生產(chǎn)的候選版本。自從 .NET 6 自預(yù)覽版 1 以來一直在支持 Microsoft 的關(guān)鍵應(yīng)用——Bing.com 和 .NET 網(wǎng)站。現(xiàn)在,隨著下個(gè)月RC1的發(fā)布,會(huì)有更多的組織開始采用.NET 6。開源項(xiàng)目ABP vNext 的5.0 版本開始已經(jīng)開始,這個(gè)版本的一個(gè)重要目標(biāo)就是升級(jí)到使用.NET 6,具體參見:https://docs.abp.io/en/abp/latest/Road-Map。
Lander 在 8 月 10 日的博客文章中說:“我們正在與各個(gè)團(tuán)隊(duì)(Microsoft 和其他團(tuán)隊(duì))就將 .NET 6 RC 投入生產(chǎn)進(jìn)行溝通?!?他邀請(qǐng)有興趣采用 .NET 6 進(jìn)行生產(chǎn)的組織與 Microsoft 聯(lián)系以獲取詳細(xì)信息和指導(dǎo)。為生產(chǎn)工作負(fù)載做好準(zhǔn)備,開發(fā)團(tuán)隊(duì)現(xiàn)在專注于最后的潤色改進(jìn),按照 .NET 主題計(jì)劃(主題網(wǎng)站:https://themesof.net/)將所有內(nèi)容提升到統(tǒng)一的高品質(zhì)水平:
Lander 表示,最后一次預(yù)覽特別重要, .NET 團(tuán)隊(duì)成員在 RC 完善階段之前努力工作以添加新功能,同時(shí)平衡以下優(yōu)先級(jí):
每個(gè)版本都添加了很多功能以提供新的價(jià)值。
新版本是高質(zhì)量的。
根據(jù)我們每年 11 月的時(shí)間表發(fā)布正式版。
就預(yù)覽版 7 中的新功能而言,有些得到了改進(jìn),而有些則是“大而全的發(fā)布功能”。例如大家期待已久的HTTP/3/Quc的支持, 預(yù)覽版 7 在 Kestrel 中引入了對(duì) HTTP/3 和 QUIC 的早期支持,以供試用并提供反饋,HTTP/3 是 HTTP 的第三個(gè)也是即將推出的主要版本。HTTP/3 使用與 HTTP/1.1 和 HTTP/2 相同的語義:相同的請(qǐng)求方法、狀態(tài)代碼和消息字段適用于所有版本。不同之處在于底層傳輸。HTTP/1.1 和 HTTP/2 都使用 TCP 作為它們的傳輸。HTTP/3 使用了一種與 HTTP/3 一起開發(fā)的新傳輸技術(shù),稱為 QUIC。具體參見ASP.NET Core的預(yù)覽版7更新:https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-7/。
還有.NET SDK模板 也做了大量的更新,把c#語言的9.0 版本最新功能引入,以充分利用最新的C# 語言用法,比如代碼生成器、編譯時(shí)反射、頂級(jí)語句等,c# 10版本還在預(yù)覽版,要了解C# 10的完整特性,可以閱讀文章:C# 10 完整特性介紹。頂級(jí)語句這個(gè)功能在博客下方引起了爭(zhēng)論,Lander 博客評(píng)論中提出的幾個(gè)問題,以及他的回答:
問:?“我知道 C# 正試圖與 Python 和 JavaScript 競(jìng)爭(zhēng)以吸引年輕開發(fā)者的注意力,但你們能不能不要?jiǎng)h除專家模板?”
Lander:?“不是那樣的。這些模板植根于(至少)40 年前的模型中。它們不以專業(yè)知識(shí)為中心。這更像是舊學(xué)校/新學(xué)校。當(dāng)然,我們確實(shí)相信這些模板將使對(duì)于熟悉 Python 或 JavaScript 或完全不熟悉編程的人來說,學(xué)習(xí) C# 更容易。也許這這個(gè)改變的一半原因。另一半是當(dāng)前的模板沒有承載它們的重量,而且也很混亂。我已經(jīng)有了多次查找 AsyncMain 的語法(即使它是微不足道的),頂級(jí)語句消除了整個(gè)問題問:?“因此,根據(jù)我從您提供的鏈接中收集到的信息,這僅適用于‘簡(jiǎn)單程序和新程序員’。是否有可用的配置選項(xiàng),或者您是否將其強(qiáng)加給我們所有人?”
Lander:?“是什么讓你得出這個(gè)結(jié)論?頂級(jí)語句模型幾乎實(shí)現(xiàn)了‘經(jīng)典’模型的所有功能。它絕對(duì)超越了簡(jiǎn)單程序和新程序員。這是一個(gè)很好的例子,一個(gè)非簡(jiǎn)單程序:https://github.com/dotnet/iot/blob/main/src/devices/Pn532/samples/Program.cs。除了該程序演示的內(nèi)容之外,您還期望做什么?”
除了頂級(jí)語句之外,SDK 包含的項(xiàng)目模板中默認(rèn)使用或啟用的其他語言功能包括:
全局 using 指令(通過SDK 驅(qū)動(dòng)的默認(rèn)值)
文件范圍的命名空間(編譯器跟蹤問題)
目標(biāo)類型new表達(dá)式
異步主
可空引用類型
說到最后一項(xiàng),可空引用類型,開發(fā)人員現(xiàn)在可以使用新的 Reflection API 來檢查它們,這些 API從 Reflection 公開頂級(jí)可空性信息,幫助他們表達(dá)是否可以構(gòu)建給定的引用類型并確定參數(shù)和返回值的可空性性質(zhì)對(duì)于給定的方法。
System.Text.Json 在多個(gè)方面進(jìn)行了改進(jìn),包括控制屬性序列化順序的新功能。此外,它的序列化程序現(xiàn)在將通知作為(反)序列化操作的一部分公開。
除了對(duì)庫的大量其他調(diào)整和更多新功能之外,早期的 .NET 7 功能可在預(yù)覽中使用,例如允許在接口中使用static abstract聲明成員。“,現(xiàn)在可以實(shí)現(xiàn)代數(shù)泛型方法,”Lander談到開發(fā)static abstract人員在接口中定義方法——包括運(yùn)算符——的新能力?!皩?duì)于某些人來說,此功能將是我們今年提供的絕對(duì)出色的改進(jìn)。它可能是自 Span<T> 以來最重要的新型系統(tǒng)功能?!?#xff0c; 軟件工程師 Tanner Gooding 解釋說:“您現(xiàn)在可以聲明同時(shí)是靜態(tài)和抽象的接口成員。” 這實(shí)現(xiàn)了他所說的 .NET 中長(zhǎng)期要求的特性,“在泛型類型上使用運(yùn)算符的能力”。專門寫了一篇博客文章介紹通用數(shù)學(xué)。
至于其他庫的改進(jìn),以下是更多信息的鏈接:
NativeMemory的API?- “新的本機(jī)內(nèi)存分配 API,“通過 System.Runtime.InteropServices.NativeMemory 公開”,這些API代表等同于malloc,free,realloc,和calloc?API和還包括用于對(duì)準(zhǔn)做分配的API?!?/p>
同步流重載JsonSerializer——“我們添加了新的同步 API,JsonSerializer用于將 JSON 數(shù)據(jù)序列化和反序列化到/來自流?!?/p>
System.Diagnostics Propagators - 這與以正確格式生成網(wǎng)絡(luò)標(biāo)頭以支持OpenTelemetry 有關(guān)。該團(tuán)隊(duì)正在采用傳播遠(yuǎn)通用標(biāo)頭自定義模型。
加密操作的簡(jiǎn)化調(diào)用模式——新的簡(jiǎn)化加密和解密方法提供了一種使用加密 API 的直接方法,特別是當(dāng)加密/解密有效負(fù)載已經(jīng)在內(nèi)存中并且沒有被流式傳輸時(shí)。
全球化不變模式下的完整大小寫映射支持——“我們改進(jìn)了全球化不變模式以支持完整 Unicode 字符集的大小寫映射。”
Richard Lander說.NET 6.0 將包括不支持生產(chǎn)的預(yù)覽功能。對(duì)于 .NET 6,“我們已經(jīng)構(gòu)建了將 API 標(biāo)記為‘預(yù)覽中’的功能,這些是選擇加入,使用 EnablePreviewFeatures 項(xiàng)目屬性和對(duì) System.Runtime.Experimental 的引用。這些功能可能會(huì)發(fā)生重大變化,因此僅用于測(cè)試和實(shí)驗(yàn)。
Lander 說:“我們繼續(xù)希望并依賴您的反饋。我們將把 .NET 6 的其余部分集中在回歸上(功能和性能)以及在新功能中發(fā)現(xiàn)的錯(cuò)誤。在大多數(shù)情況下,功能改進(jìn)需要等待 .NET 7。請(qǐng)分享您的任何和所有反饋,我們很樂意對(duì)其進(jìn)行分類?!?/p>
Visual Studio 也已更新, Visual Studio 2022 的預(yù)覽版 3 添加了新的項(xiàng)目屬性設(shè)計(jì)器、改進(jìn)的深色主題和新的項(xiàng)目類型,以支持使用 TypeScript 或 JavaScript 的 React 和 Vue.js。另一個(gè)新功能是能夠在單個(gè)解決方案中使用多個(gè) Git 倉庫。
Visual Studio 2019 也更新到 16.11,高級(jí)項(xiàng)目經(jīng)理 Mads Kristensen表示這是最后一次基線更新。因此,“我們鼓勵(lì)企業(yè)和專業(yè)客戶在 Visual Studio 2019 16.11 上實(shí)現(xiàn)標(biāo)準(zhǔn)化,”新功能包括 .NET 應(yīng)用程序的熱重載(查看動(dòng)態(tài)代碼更改的輸出)、改進(jìn)的 Git 工具以及將 Clang/LLVM 工具鏈更新到版本 12。
總結(jié)
以上是生活随笔為你收集整理的.NET 6 预览版 7:新功能已完成 ,将专注于改进的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 2022 P
- 下一篇: 使用 Blazor 开发内部后台(四):