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