微軟2023-10-10 釋出了 .NET 8 RC 2,下一站是.NET 8正式釋出,就在下個月Net Conf 2023[1](11月14日)期間正式釋出,我們也開始籌備第四屆中國.NET開發者峰會了。 經過長達一年時間的開發,.NET 8 規劃的所有主要的新功能都已推出,.NET 8 及其所有元件現在距離正式釋出還有一個月的時間,接下來一個月,開發團隊主要專注於透過改進功能和修復錯誤而不是引入主要的新功能來使 .NET 8 進入GA 的最終形態。
.NET 8 已準備好投入生產,但 Microsoft 建議透過 Visual Studio 17.8 預覽版 3(也是今天剛剛釋出的發行)對其進行測試,並建議開發人員轉向預覽頻道內部版本[2],以試用 Visual Studio/Visual Studio Code 的 .NET 8。2023年10月,Tiobe程式語言排行榜.顯示Java跌落比較明顯,C#上升趨勢比較明顯. Tiobe官方表示,目前,差異僅為1.2%,如果趨勢保持這種狀態,C#將在大約2個月內超過Java。
.NET 團隊今天在官方部落格上釋出了一系列文章來介紹.NET 8框架以及相關聯的 ASP.NET Core、MAUI、EF Core 、Visual Studio 2022 17.8 的功能特性:
- ASP.NET Core Updates in .NET 8 RC2[3]
- .NET MAUI Updates in .NET 8 RC2[4]
- Visual Studio 2022 17.8 Preview 3[5]
- Entity Framework Updates in .NET 8 RC2[6]
- What’s New in .NET 8[7] 中的所有新功能. 關於.NET 平臺的廣泛檢視, 請閱讀 為什麼要選擇-net[8].
我們透過上面這些文章來看一下 .NET 團隊 如何描述其開發人員工具產品的 RC2。
.NET 8
.NET 團隊在今天早晨透過文章 宣佈推出 .NET 8 RC2[9] :“這是我們最後一個釋出RC 版本。此版本包括適用於 .NET 包的新 NuGet 包自述檔案、適用於 MSBuild 的基於 CLI 的簡單專案評估、將容器釋出到 tar.gz 存檔以及適用於 .NET 的張量基元。”
文章提到的的亮點如下:
- 引入了 .NET 包的 NuGet 包自述檔案,以便為使用者提供重要資訊,並幫助他們快速瞭解庫是什麼及其用途。這是開發團隊努力提高 NuGet 包自述檔案的採用率和質量的一部分。
- MSBuild 具有一個新的、簡單的基於 CLI 的專案評估功能:
--getProperty
--getItem
--getTargetResult
,該功能可以更輕鬆地使用 、 和標誌將 MSBuild 中的資料合併到指令碼或工具中,以便於專案分析。 - SDK 容器釋出工具具有一項新功能,可以直接將容器建立為 tar.gz 存檔,這對於需要在推送映像之前掃描或移動Image的工作流非常有用,從而擴充套件了可用的部署選項。
- 引入 .NET 張量原語,增強對機器學習和資料科學操作的支援。張量原語是一組新的 API,它們引入了對張量操作的支援,這對於 AI 和機器學習工作負載至關重要。它為餘弦相似性、點積、矩陣乘法等操作提供了向量化實現。這是破例的特性發布,以前在 RC階段是不加新特性的 。這個特性對於當前的人工智慧的應用開發尤為重要,特別是開源專案Semantic kernel 也釋出了1.0 beta 1[10].
此外,有關值得注意的修補程式以及更多內容的資訊,請參閱 .NET 8 RC2 發行說明[11]。
MAUI
.NET 團隊在文章 .NET MAUI Updates in .NET 8 RC2[4] 介紹到,今天,我們透過在.NET 8候選版本8(RC2)中釋出.NET MAUI 向.NET 8正式釋出(GA)更近了一步,與 RC1 一樣,此版本包含在上線許可證中,因此您可以在生產應用程式中使用它時獲得支援。在此版本中,我們重點關注了在整個預覽版中迴歸的問題,並恢復了在改進熱過載、視覺狀態管理器、繫結和應用主題的可靠性時丟失的一些效能。
公告文章中的亮點包括:
- .NET MAUI 受上線許可證保護,並且沒有與 .NET 7 相關的重大 API 更改。
- 進行了一些最佳化以提高Android和“Setter Specificity”的效能。
ActivityExtensions.GetWindowFrame
- 該團隊修復了與 UI 元素和控制元件相關的幾個問題,以提高跨平臺的一致性和視覺準確性。
- 針對拖放功能、選項卡欄外觀和某些平臺行為制定了特定於平臺的修復,以實現跨平臺的一致使用者體驗。
- Microsoft釋出了適用於 .NET 7 的服務版本8 (版本 7.0.96),其中包含高優先順序修補程式。
- Xamarin 開發人員可以將 Xcode 15 和 Android API 34 與 Visual Studio 17.8 Preview 3 或 Visual Studio for Mac 的最新穩定版本配合使用。
有關詳細資訊,請參閱 .NET MAUI 發行說明[12]。
ASP.NET Core
.NET團隊在 .NET 8 RC 2 中 ASP.NET Core 更新[3]的公告文章中介紹了,開發團隊在這個週期中的大部分工作都致力於 Blazor,主要使用 C# 而不是通常的主流 JavaScript 進行 Web 開發的Microsoft 的方案。該帖子特別列車了 Blazor 的 11 個項改進, 其他還包括一個元件項,兩個伺服器和中介軟體項,換句話說ASP.NET Core的核心特性都是Blazor。
對於 .NET 8,Microsoft引入了 Blazor 的一個重要新概念,即提供全棧 Web UI 的能力。 .NET團隊表示,隨著.NET 8的釋出,Blazor是一個全棧Web UI框架,用於開發在元件或頁面級別呈現內容的應用程式:
- 靜態伺服器呈現以生成靜態 HTML。
- 使用 Blazor 伺服器託管模型的互動式伺服器呈現。
- 使用 Blazor WebAssembly 託管模型的互動式客戶端呈現。
- 首先使用 Blazor Server 自動呈現互動式客戶端,然後在下載 Blazor 捆綁包並啟用 .NET WebAssembly 執行時後,在後續訪問時呈現 WebAssembly。自動呈現通常提供最快的應用啟動體驗。
公告文章的亮點包括:
- HTTP 日誌記錄中介軟體具有持續時間日誌記錄、組合日誌和自定義攔截器等新功能。
- IdentityModel 庫已更新到版本 7x,這提高了效能、一致性和本機 AOT 相容性。
- 最小 API 和 Blazor 的表單繫結現在支援具有屬性的型別。
IFormFile
- SignalR TypeScript 客戶端現在支援有狀態重新連線,從而減少出現臨時網路問題的客戶端的停機時間。
- Blazor Web 應用模板具有用於全域性或按頁面啟用互動式呈現模式以及使用 Blazor 標識 UI 的新選項。
- Blazor WebAssembly 獨立應用模板已重新命名和更新,以支援沒有 ASP.NET 核心伺服器的靜態網站託管。
@rendermode
現在可以在檔案範圍內應用 Razor 指令,以在元件定義上指定呈現模式。- Blazor 的增強導航和表單處理已透過新的屬性和事件進行了改進,以控制和自定義行為。
- 已實現互動式伺服器元件的電路關閉,以便在頁面上沒有剩餘的互動式元件時釋放伺服器資源。
- Blazor 中的表單模型繫結現在遵循資料協定屬性,用於自定義表單資料繫結到模型的方式。
HttpContext
現在可以作為級聯引數從靜態伺服器元件進行訪問。- 該服務現在可用於在 Blazor Web 應用中保留和讀取元件狀態。
PersistentComponentState
- 該屬性現在支援使用該屬性注入金鑰服務。
[Inject]
InjectAttribute.Key
- 對話方塊元素現在支援 Blazor 中的取消和關閉事件。
更多資訊可在新更新的“ASP.NET Core 8.0 新增功能[13]”文件中找到。
EF Core 8
EF8 Core 的公告帖子 Entity Framework Updates in .NET 8 RC2[6] 重點介紹了物件關係對映器 (ORM) 產品/服務中的“包含的一些較小功能”,儘管它還包含指向68 項針對.NET 8的改進。
公告文章的亮點包括:
- EF Core 8 需要 .NET 8,此 RC 2 版本應與 .NET 8 RC 2 SDK 一起使用。
- EF Core 8 將與 .NET 8 作為長期支援 (LTS) 版本保持一致。
- EF Core 8 引入了以下新功能:
- 更改具有資料庫預設值的屬性的哨兵值(sentinel)
- 支援訪問多個實體型別的更新
- 使用 SQL 而不是 SQL 改進查詢 替換
IN
EXISTS
- 將列對映到 或 屬性
rowversion
long
ulong
- 消除生成的 SQL 中不必要的括號
有關詳細資訊,請參閱“EF Core 8 中的新增功能[14]”文件和 EF Core 路線圖[15]。
總結
在 .NET 8 釋出的過程中,我們衷心感謝世界各地所有充滿激情的 .NET 開發人員,他們挺身而出探索和測試預覽版和候選版本。您對 .NET 生態系統的奉獻非常寶貴,您的反饋在確保此最新版本的可靠性和健壯性方面發揮了關鍵作用。感謝您成為這一激動人心的旅程的重要組成部分,我們迫不及待地想看看你將透過 .NET 8 帶來什麼。.NET團隊特別列出了以下特性來自於社群的反饋和貢獻:
- ASP.NET Core. 重新考慮在 .NET 8 中預設啟用 HTTP/3[16]
- Blazor. 圍繞 Blazor WebAssembly 的專案結構和 TFM 更改了整個計劃[17]
- Runtime. 點亮更新的 ARM64 硬體功能[18] 和 更新 Marshal.QueryInterface[19].
- 軟體開發工具包 改進了簡化的輸出路徑[20]並完善了終端記錄器
相關連結:
- [1]Net Conf 2023:https://dotnetconf.net/
- [2]預覽頻道內部版本:https://visualstudio.com/preview
- [3]ASP.NET Core Updates in .NET 8 RC2:https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-2
- [4]NET MAUI Updates in .NET 8 RC2: https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-rc-2
- [5] Visual Studio 2022 17.8 Preview 3:https://aka.ms/vs/v178P3
- [6]Entity Framework Updates in .NET 8 RC2 https://devblogs.microsoft.com/dotnet/announcing-ef8-rc2
- [7]What’s New in .NET https://learn.microsoft.com/dotnet/core/whats-new/dotnet-8
- [8]為什麼要選擇-net https://devblogs.microsoft.com/dotnet-ch/%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e9%80%89%e6%8b%a9-net/
- [9]宣佈推出 .NET 8 RC2: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/
- [10]開源專案Semantic kernel 也釋出了1.0 beta 1: https://devblogs.microsoft.com/semantic-kernel/introducing-the-v1-0-0-beta1-for-the-net-semantic-kernel-sdk/
- [11].NET 8 RC2 發行說明 https://github.com/dotnet/core/blob/main/release-notes/8.0/preview/8.0.0-rc.2.md
- [12].NET MAUI 發行說明 https://github.com/dotnet/maui/releases/tag/8.0.0-rc.2.9373
- [13]ASP.NET Core 8.0 新增功能: https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-8.0?view=aspnetcore-8.0
- [14]EF Core 8 中的新增功能: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew
- [15]EF Core 路線圖: https://learn.microsoft.com/en-us/ef/core/what-is-new/
- [16]重新考慮在 .NET 8 中預設啟用 HTTP/3: https://github.com/dotnet/aspnetcore/issues/50131
- [17]圍繞 Blazor WebAssembly 的專案結構和 TFM 更改了整個計劃: https://github.com/dotnet/aspnetcore/issues/49079
- [18]點亮更新的 ARM64 硬體功能:https://github.com/dotnet/runtime/issues/89937
- [19]更新 Marshal.QueryInterface: https://github.com/dotnet/runtime/issues/91981
- [20]改進了簡化的輸出路徑: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/#sdk-simplified-output-path-updates