1. 程式人生 > >【翻譯】.NET 5 Preview5釋出

【翻譯】.NET 5 Preview5釋出

今天,釋出了.NET 5.0 Preview5。主要對它進行了一小部分新功能和效能的改進。[.NET 5.0 Preview 4](https://devblogs.microsoft.com/dotnet/announcing-net-5-preview-4-and-our-journey-to-one-net/)包含了一些計劃和.NET 5.0要交付的內容。 現在,大多數的功能都已經包含在裡面,但是有許多功能還未到最終狀態。預計這個版本在Preview 7中完善。 可以下載適用於Windows,macOS和Linux的[.NET 5.0 Preview 5](https://dotnet.microsoft.com/download/dotnet/5.0): - [Windows and macOS installers](https://dotnet.microsoft.com/download/dotnet/5.0) - [Binaries](https://dotnet.microsoft.com/download/dotnet/5.0) - [Docker images](https://hub.docker.com/_/microsoft-dotnet) - [Snap installer](https://snapcraft.io/dotnet-sdk) [ASP.NET Core](https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-5/)和[EF Core](https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-5-0-preview-5/)也在今天釋出了 我們需要使用Visual Studio 2019 16.7才能使用.NET 5.0。 安裝最新版本的[C#擴充套件](https://code.visualstudio.com/Docs/languages/csharp),以將.NET 5.0與Visual Studio Code結合使用。 Mac的Visual Studio尚不支援.NET 5.0。 釋出說明: - [.NET 5.0 release notes](https://github.com/dotnet/core/blob/master/release-notes/5.0/preview/5.0.0-preview.5.md) - [.NET 5.0 known issues](https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-known-issues.md) - [GitHub release](https://github.com/dotnet/core/releases/tag/v5.0.0-preview.5) - [GitHub tracking issue](https://github.com/dotnet/core/issues/4813) # RyuJIT改進 對RyuJIT JIT編譯器進行了以下改進 - [新的、更快的、可移植的tailcall helper實現](https://github.com/dotnet/runtime/pull/341)。 - ARM64硬體內部物理的實現程序 - [實現ASIMD Extract Insert ExtractVector64 ExtractVector128](https://github.com/dotnet/runtime/pull/35030) - [實現 ASIMD widening, narrowing, saturating intrinsics](https://github.com/dotnet/runtime/pull/35612) - [新增VectorTableList和TableVectorExtension內部函式](https://github.com/dotnet/runtime/pull/35600) - [新增對ARM64內部函式的CreateScalarUnsafe()支援](https://github.com/dotnet/runtime/pull/35590) - [ARM64對Vector64.Create()和Vector128.Create()的內在支援](https://github.com/dotnet/runtime/pull/35590) - [使用arm64 intrinsic優化BitOperations.PopCount ()](https://github.com/dotnet/runtime/pull/35636) - [在影響正則表示式編譯的情況下改進了JIT的速度](https://github.com/dotnet/runtime/pull/35352) - [使用新的硬體特性BSF/BSR改進英特爾架構效能](https://github.com/dotnet/runtime/pull/34550) - [實現Vector{Size}.AllBitsSet](https://github.com/dotnet/runtime/pull/33924) # Native exports 曾要求為匯出本機二進位制檔案啟用匯出功能,這些功能已在很長一段時間內呼叫.NET程式碼。 這是一個很好的方案,現在通過.NET 5.0啟用它。 該功能的構建塊是託管對[UnmanagedCallersOnlyAttribute](https://github.com/dotnet/runtime/blob/master/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/UnmanagedCallersOnlyAttribute.cs)的API支援。 這個功能是建立更高級別體驗的基礎。 團隊的[Aaron Robinson](https://github.com/AaronRobinsonMSFT)一直在從事.NET Native Exports專案,該專案為將.NET元件作為本機庫釋出提供了更完整的體驗。 目前正在尋求有關此功能的反饋,以幫助我們確定該方法是否應包含在產品中。 .NET本地匯出專案使我們能夠: - 公開自定義的 native exports。 - 不需要像COM這樣的高階互操作技術。 - 跨平臺工作 現有的專案可以實現類似的方案,例如: - [Unmanaged Exports](https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports) - [DllExport](https://github.com/3F/DllExport) # [重大變化]刪除.NET 5.0中內建的WinRT支援 注意:這個變化將出現在預覽6中。這是一個早期的通知。 [Windows Runtime(WinRT)](https://blogs.windows.com/windowsdeveloper/2019/04/30/calling-windows-10-apis-from-a-desktop-application-just-got-easier/)是Windows中公開使用的新API的技術和ABI。 您可以通過.NET程式碼呼叫這些API,類似於使用C ++的方法。 在.NET Core 3.0中添加了對WinRT interop的支援,這是對Windows桌面客戶端框架(Windows Forms和WPF)新增支援的一部分。 最近,一直在與Windows團隊緊密合作,以更改和改進WinRT interop與.NET的協作方式。 我們已用Windows團隊在.NET 5.0中提供的[C#/WinRT](https://docs.microsoft.com/windows/uwp/csharp-winrt/)工具鏈替換了內建的WinRT支援。 WinRT互操作中的此更改是一項重大更改,使用WinRT的.NET Core 3.x應用將需要重新編譯。 我們將在即將來臨的預覽中提供更多資訊。 [在.NET 5中的支援WinRT API](https://github.com/dotnet/runtime/issues/35318)中明確指出了這些好處: - WinRT互操作可以獨立於.NET runtime進行開發和改進。 - 使WinRT互操作與為其他作業系統(如iOS和Android)提供的互作業系統對稱。 - 可以利用許多其他。net特性(AOT, c#特性, IL linking)。 - 簡化.NET執行時程式碼庫(刪除6萬行程式碼)。 # 將System.DirectoryServices.Protocols擴充套件到Linux和macOS 新增對[System.DirectoryServices.Protocols](https://docs.microsoft.com/dotnet/api/system.directoryservices.protocols)的跨平臺支援。 在Preview 5中,添加了對Linux的支援,並在Preview 6中添加了對macOS的支援。對Windows支援已經存在。 [System.DirectoryServices.Protocols](https://docs.microsoft.com/dotnet/api/system.directoryservices.protocols)是比[System.DirectoryServices](https://docs.microsoft.com/dotnet/api/system.directoryservices)更低級別的API,並且啟用更多方案。 System.DirectoryServices包含僅適用Windows的概念/實現,因此製作跨平臺並不是一個很容易的事情。 這兩個API都支援對目錄服務伺服器(如[LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol)或[Active Directory](https://en.wikipedia.org/wiki/Active_Directory))進行控制和互動。 # Alpine 3.12 本週,增加了對Alpine 3.12,.NET Core 3.1和.NET 5的支援。 Alpine Linux的維護者於5月29日宣佈釋出Alpine 3.12。 與過去相比,以更快,更可預測的方式增加對新Linux發行版的支援。 會發現他們已經開始使用一種新的釋出模型來發布新發行版的問題。 這就是我們對[Alpine 3.12](https://github.com/dotnet/core/issues/4750)所做的。 將來,我們計劃更早地釋出這些問題。 例如,需要跟蹤的下一個發行版可能是[Ubuntu 20.10](https://wiki.ubuntu.com/Releases)。 尚未決定,但可能會在7月或8月釋出該發行版的類似問題,以準備10月發行的新Ubuntu版本。 # 最後 感謝大家對.NET 5.0預覽版的反饋以及您的早期反饋。 正如文章的簡介中所建議的那樣,現在才釋出大約一半。 現在包括了大多數功能,但是我們希望在接下來的幾個預覽中會進行許多更改,以完成體驗並消除仍然存在的粗糙邊緣。 來源:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-5/