共用方式為


.NET 5 的新功能

.NET 5 是在 3.1 之後的下一個主要 .NET Core 版本。 此版本名為 .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 表單 ASP.NET Core BlazorRazor Pages
Windows 工作流程 (WF) Elsa-Workflows

Windows Communication Foundation

原始的 Windows Communication Foundation (WCF) 實作僅在 Windows 上受到支援。 不過,.NET Foundation 提供了可使用的客戶端埠。 Microsoft完全 開放原始碼、跨平臺及支援。 核心 NuGet 套件如下所列:

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

.NET 5 不會取代 .NET Standard

新開發的應用程式可以為所有專案類型,包括類別函式庫,指定 net5.0 Target 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

  • 最上層語句:作為加速採用和學習 C# 的方法,可以省略 Main 方法,而且應用程式就像下列範例一樣簡單:

    System.Console.Write("Hello world!");
    
  • 函式指標:公開下列中繼語言的語言結構: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中有新功能:

另請參閱