.NET Core 2.1 Preview 2發布 - April 10, 2018


原文: https://blogs.msdn.microsoft.com/dotnet/2018/04/11/announcing-net-core-2-1-preview-2/ 

我們今天宣布發布 .NET Core 2.1 Preview 2。這也是我們在接下來的兩到三個月內接近最終發布的版本,該版本現已准備好進行廣泛的測試。我們希望您有任何反饋意見。

ASP.NET Core 2.1 Preview 2Entity Framework 2.1 Preview 2也在今天發布。

您可以在Windows,MacOS和Linux上下載並開始使用.NET Core 2.1 Preview 2:

您可以在.NET Core 2.1 Preview 2發行說明中看到該發行版的詳細信息。發行說明中包含已知問題和解決方法。

您可以使用Visual Studio 2017 15.7 Preview 1或更高版本或Visual Studio Code 開發.NET Core 2.1應用程序。我們期望Visual Studio for Mac將在.NET Core 2.1 RTM 發布時增加支持。

非常感謝你一直以來參與我們的測試工作,直到我們發布.NET Core 2.1 RTM,我們將繼續需要你的幫助。

構建性能優化

.NET Core 2.1 中的構建時性能得到了很大的提升,特別是對於增量構建。這些改進同時適用於命令行上的dotnet build 和 Visual Studio 中的構建。 我們對 CLI 工具和 MSBuild 進行了改進,以使這些工具提供更快的體驗。

下面的圖表提供了您可以從.NET Core 2.0 以來所獲得的改進的具體數字。 我們專注於大型項目。

增量構建性能

這些改進來自許多變化,包括以下幾點:

如果您沒有看到使用.NET Core 2.1 Preview 2的顯着改進,我們很高興看看您的項目。

長時間運行的SDK構建服務器

我們將長時間運行的服務器添加到.NET Core SDK中,以提高常見開發操作的性能。 其中一些是移植自.NET Framework,另一些是新的。

已經添加以下SDK構建服務器:

    • VBCSCompiler
    • MSBuild worker processes
    • Razor server

這些服務器的主要優勢是,它們可以避免在每次dotnet build調用時都需要JIT編譯大量代碼。它們會在一段時間后自動終止。

您可以通過以下命令手動終止構建服務器進程:

dotnet buildserver shutdown

這個命令可可以在CI腳本中使用,以便在完成構建之后終止工作進程。您也可以運行構建dotnet build -nodeReuse:false以阻止創建MSBuild工作進程。

新的SDK命令

以下工具已添加到SDK中:

  • dotnet watch
  • dotnet dev-certs
  • dotnet user-secrets
  • dotnet sql-cache
  • dotnet ef

我們發現這些工具非常受歡迎行,不把它們添加到單個項目中似乎不是正確的設計,所以我們將它們作為SDK的一部分。

這些工具以前是DotNetCliToolReference工具。他們不再以這種方式交付。當您采用.NET Core 2.1時,您可以刪除項目文件中DotNetCliToolReference的條目。

全局工具

.NET Core 現在有一個新部署和擴展機制。這種新體驗與 NPM 全局工具非常相似,並且受到 NPM 全局工具的啟發。

對於預覽版2,全局工具的語法已更改,如以下示例中所示:

dotnet tool install -g dotnetsay 
dotnetsay

您可以通過查看 donetsay 工具示例 來創建自己的全局工具,(在安裝.NET Core 2.1 Preview 2之后)。

新工具參數

所有工具操作現在都使用該dotnet tool命令。Preview 2中添加了以下新功能:

  • dotnet tool install - 安裝一個工具
  • dotnet tool update - 卸載並重新安裝工具,並對其進行有效更新
  • dotnet tool uninstall - 卸載一個工具
  • dotnet tool list - 列出當前安裝的工具
  • --tool-path - 為每個調用指定一個特定的位置以(un)安裝和列出工具

次要版本前滾

從2.0開始可以在相同主要版本范圍內較新運行時版本上運行 .NET Core 應用程序。您可以在.NET Core 2.1 Preview 1文章中了解有關該行為的更多信息

但是,.NET Core對於預覽版具有相反的行為。包括全局工具在內的應用程序不會從一個預覽轉到另一個預覽,或從預覽到RTM。這意味着您需要發布全局工具的新版本以支持后期預覽和RTM。

預覽策略有點爭議。背后的原因是我們可能會在給定的預覽版和最終的RTM版之間做出破壞性的變更。這一策略使我們能夠做到這一點,同時盡量減少生態系統的破損。還有一種可能的情況是,為預覽而構建的軟件沒有使用RTM構建進行測試,但是,這種基本原理不太引人注目。

自.NET Core項目啟動以來,該策略已經實施。全局工具使其更具挑戰性。我們非常感謝您對此的反饋和洞察力。

Sockets 性能和 SocketsHttpHandler

我們對.NET Core 2.1中的Sockets 進行了重大改進。Sockets 是傳出和傳入網絡通信的基礎。.NET Core 2.1中的更高層級網絡 API(包括HttpClient和Kestrel)現在基於.NET sockets.。在早期版本中,這些更高級別的API基於原生網絡實現。

我們從頭建立了一個新的管理的HttpMessageHandler,叫做SocketsHttpHandler。它是基於.NET套接字和Span <T>的HttpMessageHandler的實現。

SocketsHttpHandler現在是HttpClient的默認實現。SocketsHttpHandler最大的成就就是性能。它比現有的實現快得多。還有其他好處,例如:

  • 消除了libcurl(用於Linux和MacOS)和WinHTTP(用於Windows)的平台依賴關系- 簡化了開發,部署和服務。
  • 跨平台和平台/依賴版本的一致行為。

您可以使用以下某種機制來配置進程以使用舊版本HttpClientHandler

從代碼中,使用AppContext類:

AppContext.SetSwitch(“System.Net.Http.UseSocketsHttpHandler”,false);

AppContext開關也可以通過配置文件進行設置。

通過環境變量也可以達到同樣的效果DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER。要退出,請將該值設置為false或0。

在Windows上,您可以選擇使用WinHttpHandlerSocketsHttpHandler以逐個調用為基礎。為此,請實例化其中一種類型,然后在實例化時將其傳遞給HttpClient

在Linux和MacOS上,您只能在進程基礎上配置HttpClient。在Linux上,如果您想使用舊的HttpClient實現,則需要自己部署libcurl。如果您的計算機上安裝了.NET Core 2.0,則libcurl已安裝。

自包含的應用程序服務

dotnet publish 現在用服務運行時版本發布自包含應用程序。當您使用新SDK發布自包含應用程序時,您的應用程序將包含該SDK已知的最新服務運行時版本。當您升級到最新的SDK時,您將使用最新的.NET Core運行時版本進行發布。這適用於.NET Core 1.0運行時和更高版本。

自包含發布依賴於NuGet.org上的運行時版本。你不需要在你的機器上有服務運行時。

使用.NET Core 2.0 SDK,自包含應用程序將與.NET Core 2.0.0 Runtime一起發布,除非通過RuntimeFrameworkVersion屬性指定了不同的版本。有了這種新行為,您將不再需要設置此屬性來為自包含應用程序選擇更高的運行時版本。最簡單的方法是始終使用最新的SDK發布。

Docker

我們正在整合我們用於.NET Core和ASP.NET Core的一系列Docker Hub存儲庫。我們將使用microsoft / dotnet作為我們唯一的.NET Core資源庫。

公開可用的統計數據表明,大多數用戶已經在使用dotnet回購,正如您通過以下泊塢扣拉取徽章所看到的那樣:

    • microsoft/dotnet ->
    • microsoft/aspnetcore ->
    • microsoft/aspnetcore-build ->

您可以通過aspnet / announcements#298了解有關此更改以及如何適應的更多信息。

我們還為.NET Core Docker鏡像添加了一組環境變量,適用於2.0及更高版本。這些環境變量可以讓更多方案無需其他配置即可工作,例如在容器中開發ASP.NET Core應用程序

    • To sdk images (example)
      • ASPNETCORE_URLS=http://+:80
      • DOTNET_RUNNING_IN_CONTAINER=true
      • DOTNET_USE_POLLING_FILE_WATCHER=true
    • To Linux runtime-deps images (example)
      • ASPNETCORE_URLS=http://+:80
      • DOTNET_RUNNING_IN_CONTAINER=true
    • To Windows runtime images (example)
      • ASPNETCORE_URLS=http://+:80
      • DOTNET_RUNNING_IN_CONTAINER=true

注意:這些環境變量將在本月晚些時候添加到2.0 鏡像中。

支持的操作系統和芯片架構

最大的補充是支持Ubuntu 18.04並增加了官方的ARM32支持。

我們將支持 .NET Core 2.1 的以下操作系統版本

  • Windows客戶端:7,8.1,10(1607+)
  • Windows Server:2008 R2 SP1 +
  • macOS:10.12+
  • RHEL:7+
  • Fedora:26+
  • openSUSE:42.3+
  • Debian:8+
  • Ubuntu:14.04+
  • SLES:12+

Alpine 支持仍在預覽中。

我們將支持以下芯片架構:

  • 在Windows上:x64和x86
  • 在Linux上:x64和ARM32
  • 在macOS上:x64

Azure應用服務和VSTS部署

ASP.NET Core 2.1預覽不會自動部署到Azure App Service。相反,您可以選擇僅使用一點點配置來使用.NET Core預覽。有關更多信息,請參閱在Azure應用程序服務上使用ASP.NET Core預覽

Visual Studio Team Service對.NET Core 2.1的支持將更接近RTM。

.NET Core 2.1 Preview 1 的關鍵改進

有一些重要的改進對於從.NET Core 2.1 Preview 1中重述很重要。有關更多詳細信息,請參閱.NET Core 2.1 Preview 1 Announcement

  • 次要版本前滾
  • Span, Memory and friends
  • Windows Compatibility Pack

結束

請使用.NET Core 2.1 Preview 2測試您的現有應用程序。預先感謝您嘗試一下。我們需要您的反饋,在最終的2.1版本中通過線上的這些新功能測試到達終點。

.NET Core 2.1是.NET Core 2.0向前邁進的一大步。我們希望您找到能夠讓您升級的多項改進。

再一次感謝所有為發布做出貢獻的人。我們非常感謝您貢獻的所有問題和PR,幫助您制作此預覽版。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM