.NET Core 3.0稳定版发布
一年一度的 .NET 開發者盛會 .NET Conf 2019 已正式開始了(舉辦時間為 9.23-9.25)。大會第一天最重磅也是最激動人心的消息莫過于 .NET Core 3.0 穩定版的發布。.NET 項目管理總監 Scott Hunter 在大會宣布了這則消息,并在主題演講環節圍繞 .NET Core 3.0?的新特性和社區展開了介紹。
作為一個大版本更新,.NET Core 3.0 引入了大量改進和新特性,例如新增加的 Windows Forms 和 WPF、新的 JSON API、對 ARM64 架構的支持,以及全面提升的性能。對了,C# 8 也是 .NET Core 3.0 本次更新的一部分,其中包括可空引用類型(nullable)、異步流(Async Streams)和更多的模式。
除了 C# 8,.NET Core 3.0 的更新內容還包括 F# 4.7,此版本主要是對語法進行改進,并將目標平臺升級至面向 .NET Standard 2.0。
.NET 團隊表示 .NET Core 3.0 會兼容之前的版本,所以大家現在就可以將項目升級至 .NET Core 3.0。
.NET Core 3.0 的一些“新料”
在深入探究 .NET Core 3.0 的所有新功能之前,先來看看一些重要的改進,其中提及到了 C# 8、F# 4.7、.NET Standard 2.1、在其他發行版上的支持情況等。
要注意的是,如需使用 .NET Core 3.0,請將 Visual Studio 升級至 2019 16.3 版本(Windows 用戶)。在 .NET Core 3.0 穩定版發布前,它已在 dot.net 和 Bing.com 這兩個網站上運行了數月,并已通過嚴格的測試。微軟的團隊也將很快在生產環境中將工作負載部署到 .NET Core 3.0?上。
許多組件的性能都獲得了巨大提升,詳情可查看介紹 .NET Core 3.0 性能改進的內容。
C# 8 增加了異步流(async streams)、范圍類型和索引類型(range/index)、更多的模式以及可空引用類型。可空引用類型主要用于幫助我們處理無處不在的空引用異常(NullReferenceException),另外,框架庫的底層已被注釋,編譯器會分析代碼流,因此我們能查看null值是否可以將其用于當前位置。
F# 4.7?主要是通過使用隱式的yield表達式來簡化一些操作,以及語法。此外還提供了對LangVersion的支持、新增nameof關鍵字,和處于預覽階段的靜態類。F# 核心庫的目標平臺為 .NET Standard 2.0,詳情點此了解。
.NET Standard 2.1 增加了可以在代碼中使用的類型集,它們也可同時用于 .NET Core 和 Xamarin。
.NET Core 現在已為 Windows 桌面應用提供支持、同時支持 Windows Forms 和 WPF(已開源)。WPF 設計器已屬于 Visual Studio 2019 16.3 的一部分。Windows Forms 設計器則仍處于預覽階段,可從 VSIX 進行下載。
.NET Core 應用現在默認情況下就具有可執行文件。在之前的版本中,需要通過dotnet命令來啟動應用,如dotnet myapp.dll。不過從這個版本開始,我們可以使用特定于應用程序的可執行文件(例如?myapp或./myapp, )來啟動應用程序,具體取決于操作系統。
新增高性能的 JSON API,用于讀取器/寫入器、對象模型和序列化方案。這些 API 基于Span<T>從頭開始構建,使用?UTF8 來替代 UTF16(如?string),另外由于這些 API 使用了最小化的內存分配,因此帶來了更好的性能,減少了垃圾回收器的工作。詳情請查看 The future of JSON in .NET Core 3.0。
默認情況下,垃圾回收器使用更少的內存。對于許多應用程序托管在同一服務器上的情況,此改進非常有用。此外,新版本中 GC 能更好地利用具有 64 核(或大于)的機器的核心數量。
.NET Core 強化了對 Docker 的支持,以使 .NET 應用程序在容器中能按預期且有效地運行。當容器被配置為有限的內存或 CPU 時,垃圾回收器和線程池會更好地進行適應已提供最具優化效果的運行方式。.NET Core 的 Docker 鏡像體積也更小 —— 尤其是 SDK 鏡像。
支持 Raspberry Pi 和 ARM 芯片,以助力 IoT 開發。其中包括遠程 Visual Studio 調試器。這就意味著我們可以使用新的 GPIO API 來部署可監聽傳感器的應用程序,并在顯示器上打印消息或圖像。ASP.NET 可用于將數據暴露為 API,或作為一個在 IoT 設備啟用配置的站點。
.NET Core 3.0 會被 11 月發布的 .NET Core 3.1 取代,因為后者才是 LTS 版本(至少會獲得三年的技術支持),不過官方還是建議大家先升級到 .NET Core 3.0,然后再升級到 3.1,這樣過渡起來更方便。
.NET Core 2.2 將于今年 12.23 到達 EOL 階段。查看 .NET Core support policy。
.經過與 Red Hat 的多年合作,.NET Core 3.0 將隨 RHEL 8 在 Red Hat Application Streams 中一起提供。
Visual Studio 用戶如需在 Windows 上使用 .NET Core 3.0,需要升級至 Visual Studio 2019 16.3。
Visual Studio 用戶如需在 macOS 上使用 .NET Core 3.0,需要升級至 Visual Studio for Mac 8.3。
Visual Studio Code 用戶則需要使用最新版本的 C# 擴展,以確保最新的方案能夠正常工作,包括針對 .NET Core 3.0 的目標平臺。
.NET Core 3.0?的 Azure App Service 部署目前正在進行中。
.NET Core 3.0 的 Azure Dev Ops 部署即將推出。
.NET Core 3.0 支持的平臺
Alpine: 3.9+
Debian: 9+
openSUSE: 42.3+
Fedora: 26+
Ubuntu: 16.04+
RHEL: 6+
SLES: 12+
macOS: 10.13+
Windows Client: 7, 8.1, 10 (1607+)
Windows Server: 2012 R2 SP1+
要注意的是,Windows Forms 和 WPF 應用僅支持在 Windows 上運行。
對芯片的支持情況如下:x64 on Windows, macOS, and Linux
x86 on Windows
ARM32 on Windows and Linux
ARM64 on Linux (kernel 4.14+)
注意:請確保 .NET Core 3.0 在 ARM64 上的部署使用 Linux Kernel 4.14 或更高版本。例如,Ubuntu 18.04 能滿足此要求,但 16.04 卻不滿足。
WPF 和 Windows Forms
現在我們可以在 Windows 上使用 .NET Core 3 構建 WPF 和 Windows Forms 應用程序了。有關兼容性方面的問題,微軟表示大可不必擔心,因為他們從一開始就考慮到了這個問題,以使將桌面應用程序從 .NET Framework 遷移到 .NET Core 變得更加容易。下面是官方提供的一個例子,.NET Core Windows Forms App:Visual Studio 2019 16.3 支持創建面向 .NET Core 的 WPF 應用程序,這包括新模板以及更新的 XAML 設計器和 XAML Hot Reload。
下圖展示了使用新設計器開發的 WPF 應用程序:不過 Windows Forms 設計器目前尚處于預覽階段,可從此處單獨下載。微軟表示會在未來發布的 Visual Studio 中集成 Windows Forms 設計器。
更多內容請查看「閱讀原文」。
總結
以上是生活随笔為你收集整理的.NET Core 3.0稳定版发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [翻译] ASP.NET Core 3.
- 下一篇: ASP.NET Core 3.0 使用g