.NET 5 中的新功能

.NET 5 為 .NET Core 3.1 後的下一個主要版本。 基於兩個原因,我們將此新版本命名為 .NET 5,而不是 .NET Core 4:

  • 已略過版本號碼 4.x,以避免與 .NET Framework 4.x 混淆。
  • 我們已去除名稱中的「Core」,以強調此為 .NET 未來的主要實作。 .NET 5 支援比 .NET Core 或 .NET Framework 更多的應用程式類型和平台。

ASP.NET Core 5.0 以 .NET 5 為基礎,但會保留名稱 「Core」,以免與 ASP.NET MVC 5 混淆。 同樣地,Entity Framework Core 5.0 會保留名稱 「Core」,以免與 Entity Framework 5 和 6 混淆。

相較於 .NET Core 3.1,.NET 5 包含下列改善功能及新功能:

.NET 5 不會取代 .NET Framework

.NET 5 以上版本為 .NET 未來的主要實作,但仍支援 .NET Framework 4.x。 目前未計劃將 .NET Framework 的下列技術移植到 .NET 5,但 .NET 中有替代項目:

技術 建議的替代方案
Web Form ASP.NET Core BlazorRazor Pages
Windows Workflow (WF) Elsa-Workflows

Windows Communication Foundation

僅支援 Windows 進行 Windows Communication Foundation (WCF) 的原始實作。 不過,有一個用戶端連接埠可從 .NET Foundation 取得。 該連接埠為完全開放原始碼、跨平台,且由 Microsoft 支援。 核心 NuGet 套件如下所列:

補強上述用戶端程式庫的伺服器元件可透過 CoreWCF 取得。 自 2022 年 4 月起,Microsoft 正式支援 CoreWCF。 但請考慮 gRPC 作為 WCF 的替代方案。

.NET 5 不會取代 .NET Standard

新的應用程式開發可指定所有專案類型的 net5.0 目標 Framework Moniker (TFM),包含類別庫。 .NET 5 工作負載之間的共用程式碼已簡化:您只需要 net5.0 TFM。

針對 .NET 5 應用程式和程式庫,net5.0 TFM 會結合並取代 netcoreappnetstandard TFM。 但若您計劃讓 .NET Framework、.NET Core 和 .NET 5 工作負載共用程式碼,則可指定 netstandard2.0 作為 TFM。 如需詳細資訊,請參閱 .NET Standard

C# 更新

撰寫 .NET 5 應用程式的開發人員可存取最新的 C# 版本和功能。 .NET 5 會與 C# 9 配對,為該語言加入許多新功能。 以下為幾項重點功能:

  • 記錄:參考型別包含以值為基礎的相等語意,以及新 with 運算式支援的非破壞性變異。

  • 關係模式比對:將模式比對功能延伸至比較評估和運算式的關係運算子,包含邏輯模式 - 新關鍵字 andornot

  • 最上層語句:可省略方法 Main 以加速採用和學習 C#,簡單有效的應用程式如下列範例:

    System.Console.Write("Hello world!");
    
  • 函式指標:語言建構,且公開下列中繼語言 (IL) 作業碼:ldftncalli

如需 C# 9 可用功能的詳細資訊,請參閱 C# 9 的新功能

來源產生器

除了幾項重點新 C# 功能以外,來源產生器也加入了開發人員專案。 來源產生器可使用在編譯期間執行的程式碼,以便檢查程式,並產生與其餘程式碼共同編譯的其他檔案。

如需來源產生器的詳細資訊,請參閱 C# 來源產生器簡介C# 來源產生器範例

F# 更新

F# 為 .NET 功能性程式設計語言,開發人員可使用 .NET 5 存取 F# 5。 其中一項新功能為差補字串,類似 C#、甚至 JavaScript 中的差補字串。

let name = "David"
let age = 36
let message = $"{name} is {age} years old."

除了基本的字串插補以外,也有類型插補。 使用類型插補時,指定類型必須符合格式規範。

let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."

此格式類似 sprintf 函式,根據型別安全的輸入來格式化字串。

如需詳細資訊,請參閱 F# 5 的新功能

Visual Basic 更新

.NET 5 中的 Visual Basic 沒有新的語言功能。 但使用 .NET 5 時,Visual Basic 支援會延伸至:

描述 dotnet new 參數
主控台應用程式 console
類別庫 classlib
WPF 應用程式 wpf
WPF 類別庫 wpflib
WPF 自訂控制項程式庫 wpfcustomcontrollib
WPF 使用者控制項程式庫 wpfusercontrollib
Windows Forms (WinForms) 應用程式 winforms
Windows Forms (WinForms) 類別庫 winformslib
單元測試專案 mstest
NUnit 3 測試專案 nunit
NUnit 3 測試項目 nunit-test
xUnit 測試專案 xunit

如需 .NET CLI 中專案範本的詳細資訊,請參閱 dotnet new

System.Text.Json 新功能

已有 System.Text.Json 新功能:

另請參閱