後端工坊 2026 年 6 月 10 日

2026-06-10 — .NET 11 Preview 5 JSON Lines 與 C# Union、npm v12 git 依賴預設封鎖

primary=https://devblogs.microsoft.com/dotnet/dotnet-11-preview-5 primary=https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/ primary=https://github.com/orgs/community/discussions/178140

.NET 11 Preview 5:JSON Lines、LINQ Full Outer Join、C# 封閉類別層次結構

Microsoft DevBlogs · 2026-06-09

.NET 11 Preview 5 於 2026 年 6 月 9 日發布,橫跨 runtime、SDK、函式庫、C#、ASP.NET Core、MAUI 與 Entity Framework Core 帶來多項改動。以下依元件整理重點:

函式庫與語言

System.Text.Json 新增 JSON Lines(.jsonl)序列化支援,每行輸出一個獨立 JSON 物件,適用於串流處理大型資料集。LINQ 新增 FullOuterJoin,補足先前只支援 left/right join 的缺口。

C# 語言新增兩項大型功能。封閉類別層次結構(closed class hierarchies)允許編譯器在 switch expression 中對密封型別層次進行完整性(exhaustiveness)檢查,類似 sealed interface 對 enum-like 模式的增強。Union 宣告與模式(union declarations and union patterns)引入更接近代數資料型別的語法,配合 closed hierarchy 使用。此外,密碼學模組新增 X25519 金鑰協商,Random 類別新增泛型數值 API。

SDK 與 ASP.NET Core

SDK 新增建置時的 SDK 漏洞與 EOL 版本自動檢查,在 CI 流程中提前揭露已知風險依賴。dotnet new 新增 MCP Server 範本,System.Net.Http.Json 預設內含於 console app。

ASP.NET Core 方面,Blazor SSR 新增 client-side validation 支援;QuickGrid 無需 interactivity 即可運作;新增 Blazor WebAssembly Gateway 元件,以及 SupplyParameterFromSession attribute 供 Blazor 元件從 session 取得參數。

MAUI 與 Entity Framework Core

.NET MAUI 新增支援 CancellationToken 的動畫 overload,Windows Maps 改由 Azure Maps 驅動,Android API 37 穩定化。Entity Framework Core 的 dotnet ef 支援 file-based application;SQL Server 2022 相容性成為新的預設值;EF1004 警告可在同步上下文中偵測非預期的非同步查詢執行。

原始來源:Microsoft DevBlogs


npm v12 供應鏈強化:git 依賴預設封鎖、staged publishing、安裝來源控制

GitHub npm Blog · 2026-06-10

npm v12(預計 Q3 2026)將帶來一批破壞性安全強化。部分改動已在 npm 11.15.0 以旗標形式提前可用,這是為下個大版本做的遷移預告。

核心改動

預設封鎖 git 依賴是最大的破壞性變更。--allow-git 旗標的預設值將從 all 改為 none,意味著 package.json 中直接引用 git repository 的依賴在 npm v12 中將無法安裝,除非明確傳入 --allow-git=all

新增三個對等旗標,細化非 registry 安裝來源的控制:

  • --allow-file:本地檔案路徑與 tarball 安裝
  • --allow-remote:遠端 URL 安裝(含 HTTPS tarball)
  • --allow-directory:本地目錄安裝

各旗標接受 all(目前預設,維持相容性)或 none,可在 .npmrcpackage.json 中設定。

Staged Publishing

Staged publishing 現已正式可用(需 npm CLI 11.15.0+)。發布流程改為兩階段:npm stage publish 先將預建 tarball 上傳至 stage 佇列,必須由維護者以 2FA 驗證明確核准後,套件才正式可安裝。此設計即使在 CI/CD 自動化 trusted publishing(OIDC)流程下,也強制保留人工核准關卡,防止自動化流程被劫持後直接投毒至 registry。

其他 v12 破壞性變更包含:移除 npm shrinkwrap 命令及 npm-shrinkwrap.json 支援(改用 package-lock.json);npm adduser 命令移除;npm view --json 一律回傳陣列。

原始來源:GitHub ChangelogGitHub Community Discussion #178140


End of article
0
Would love your thoughts, please comment.x
()
x