伴隨著 。.NET 7 Preview 1 包括對 API 的可空註釋、持續的 JIT 編譯器優化、新的 API 以及對更多熱過載方案的支援。
目前 .NET 7 Preview 1 已通過 ,適用於 Windows、macOS 和 Linux 。
Microsoft.Extensions 的可空(nullable)註釋
.NET 在註釋 Microsoft.Extensions.* 庫,以實現可空性(nullability)方面取得了進展。在 .NET 7 Preview 1 中,以下庫已針對可空性進行了註釋:
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.Primitives
- Microsoft.Extensions.FileSystemGlobbing
- Microsoft.Extensions.DependencyModel
- Microsoft.Extensions.Configuration.Abstractions
- Microsoft.Extensions.FileProviders.Abstractions
- Microsoft.Extensions.FileProviders.Physical
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Configuration.CommandLine
- Microsoft.Extensions.Configuration.EnvironmentVariables
- Microsoft.Extensions.Configuration.FileExtensions
- Microsoft.Extensions.Configuration.Ini
- Microsoft.Extensions.Configuration.Json
到 .NET 7 正式釋出時,計劃為所有 Microsoft.Extensions.* 庫新增可空性註釋。可以在 處關注進度。
可觀察性(繼續改進跟蹤 API)
繼續改進跟蹤 API:
- 新增
ActivityContext.TryParse
過載,以允許解析和建立ActivityContext
物件,包括是否從遠端父級傳播活動上下文()。 - 新增
Activity.IsStopped()
方法, 指示Activity
物件是否停止()。
程式碼生成
- 將一些舊式內部函數轉換為 NamedIntrinsic 。
- 將額外的二進位制操作新增到 RangeCheck 分析中。
- [JIT] [61620] 針對 *x = dblCns 優化 ARM64;
- CoreRT 支援 ARM64&Unix 。
- 基於覆蓋的 FMA codegen 優化
動態 PGO
Arm64
互操作:p/Invoke 程式碼生成
.NET 7 將在 .NET 6 中原型化的 p/invoke 源生成器整合到 dotnet/runtime 中,並且一直在轉換執行時庫以使用它。這意味著轉換後的 p/invokes 與 AOT 相容,不再需要在執行時生成 IL 存根。
未來打算讓 p/invoke 源生成器在執行時之外可用, 中關注剩餘的工作。
System.Text.Json 中的新 API
System.Text.Json 附帶了一些小的增強功能:
- 開發人員現在可以存取
JsonSerializerOptions
:由 System.Text.Json 內部使用的預設單例()。 - 新增一個
JsonWriterOptions.MaxDepth
屬性,並確保此值來自序列化的等效JsonSerializerOptions.MaxDepth
屬性()。 - 將
Patch
方法新增到System.Net.Http.Json
()。
熱過載改進
下列更改適用於 Blazor WebAssembly 和 .NET 的 C# 熱過載
- 向現有方法新增靜態 lambda
- 將捕獲這個的 lambda 新增到已經有至少一個捕獲這個的 lambda 的現有方法中
- 向現有類新增新的靜態或非虛擬實體方法
- 向現有類新增新的靜態欄位
- 新增新類
已知的問題:
- 不支援新增類中的範例欄位
- 現有或新類中新新增的方法和欄位對反射不可見
可以在 中關注進度
釋出公告: