.NET Core 2.1 Preview 2发布 - April 10, 2018
我們今天宣布發布 .NET Core 2.1 Preview 2。這也是我們在接下來的兩到三個月內接近最終發布的版本,該版本現已準備好進行廣泛的測試。我們希望您有任何反饋意見。
ASP.NET Core 2.1 Preview 2和Entity Framework 2.1 Preview 2也在今天發布。
您可以在Windows,MacOS和Linux上下載并開始使用.NET Core 2.1 Preview 2:
.NET Core 2.1 Preview 2 SDK (包括運行時)
.NET Core 2.1 Preview 2 Runtime
您可以在.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 以來所獲得的改進的具體數字。 我們專注于大型項目。
這些改進來自許多變化,包括以下幾點:
加快包資源解決方案
加快增量包資源解析
重用MSBuild節點
緩存MSBuild ResolveAssemblyReferences
如果您沒有看到使用.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上,您可以選擇使用WinHttpHandler或SocketsHttpHandler以逐個調用為基礎。為此,請實例化其中一種類型,然后在實例化時將其傳遞給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,幫助您制作此預覽版。
原文地址 http://www.cnblogs.com/shanyou/p/8809962.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的.NET Core 2.1 Preview 2发布 - April 10, 2018的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 容器化的 DevOps 工作流
- 下一篇: asp.net ajax控件工具集 Au