.NET Core 3.0 穩定版發布
一年一度的.NET開發者盛會.NET Conf 2019在昨日(舉辦時間為9.23-9.25)正式開始了。大會第一天最重磅也是最激動人心的消息莫過於 .NET Core 3.0穩定版的發布。.NET項目管理總監 Scott Hunter在大會宣布了這則消息,並在主題演講環節圍繞.NET Core 3.0的新特性和社區展開了介紹。
.NET Conf 2019直播地址:https://www.dotnetconf.net/
作為一個大版本更新,.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穩定版發布前,它已在 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 卻不滿足。