.NET Core 2.1 Preview 2发布 - April 10, 2018
我們今天宣布發(fā)布 .NET Core 2.1 Preview 2。這也是我們?cè)诮酉聛?lái)的兩到三個(gè)月內(nèi)接近最終發(fā)布的版本,該版本現(xiàn)已準(zhǔn)備好進(jìn)行廣泛的測(cè)試。我們希望您有任何反饋意見(jiàn)。
ASP.NET Core 2.1 Preview 2和Entity Framework 2.1 Preview 2也在今天發(fā)布。
您可以在Windows,MacOS和Linux上下載并開(kāi)始使用.NET Core 2.1 Preview 2:
.NET Core 2.1 Preview 2 SDK (包括運(yùn)行時(shí))
.NET Core 2.1 Preview 2 Runtime
您可以在.NET Core 2.1 Preview 2發(fā)行說(shuō)明中看到該發(fā)行版的詳細(xì)信息。發(fā)行說(shuō)明中包含已知問(wèn)題和解決方法。
您可以使用Visual Studio 2017 15.7 Preview 1或更高版本或Visual Studio Code 開(kāi)發(fā).NET Core 2.1應(yīng)用程序。我們期望Visual Studio for Mac將在.NET Core 2.1 RTM 發(fā)布時(shí)增加支持。
非常感謝你一直以來(lái)參與我們的測(cè)試工作,直到我們發(fā)布.NET Core 2.1 RTM,我們將繼續(xù)需要你的幫助。
構(gòu)建性能優(yōu)化
.NET Core 2.1 中的構(gòu)建時(shí)性能得到了很大的提升,特別是對(duì)于增量構(gòu)建。這些改進(jìn)同時(shí)適用于命令行上的dotnet build 和 Visual Studio 中的構(gòu)建。 我們對(duì) CLI 工具和 MSBuild 進(jìn)行了改進(jìn),以使這些工具提供更快的體驗(yàn)。
下面的圖表提供了您可以從.NET Core 2.0 以來(lái)所獲得的改進(jìn)的具體數(shù)字。 我們專注于大型項(xiàng)目。
這些改進(jìn)來(lái)自許多變化,包括以下幾點(diǎn):
加快包資源解決方案
加快增量包資源解析
重用MSBuild節(jié)點(diǎn)
緩存MSBuild ResolveAssemblyReferences
如果您沒(méi)有看到使用.NET Core 2.1 Preview 2的顯著改進(jìn),我們很高興看看您的項(xiàng)目。
長(zhǎng)時(shí)間運(yùn)行的SDK構(gòu)建服務(wù)器
我們將長(zhǎng)時(shí)間運(yùn)行的服務(wù)器添加到.NET Core SDK中,以提高常見(jiàn)開(kāi)發(fā)操作的性能。 其中一些是移植自.NET Framework,另一些是新的。
已經(jīng)添加以下SDK構(gòu)建服務(wù)器:
VBCSCompiler
MSBuild worker processes
Razor server
這些服務(wù)器的主要優(yōu)勢(shì)是,它們可以避免在每次dotnet build調(diào)用時(shí)都需要JIT編譯大量代碼。它們會(huì)在一段時(shí)間后自動(dòng)終止。
您可以通過(guò)以下命令手動(dòng)終止構(gòu)建服務(wù)器進(jìn)程:
dotnet buildserver shutdown這個(gè)命令可可以在CI腳本中使用,以便在完成構(gòu)建之后終止工作進(jìn)程。您也可以運(yùn)行構(gòu)建dotnet build -nodeReuse:false以阻止創(chuàng)建MSBuild工作進(jìn)程。
新的SDK命令
以下工具已添加到SDK中:
dotnet watch
dotnet dev-certs
dotnet user-secrets
dotnet sql-cache
dotnet ef
我們發(fā)現(xiàn)這些工具非常受歡迎行,不把它們添加到單個(gè)項(xiàng)目中似乎不是正確的設(shè)計(jì),所以我們將它們作為SDK的一部分。
這些工具以前是DotNetCliToolReference工具。他們不再以這種方式交付。當(dāng)您采用.NET Core 2.1時(shí),您可以刪除項(xiàng)目文件中DotNetCliToolReference的條目。
全局工具
.NET Core 現(xiàn)在有一個(gè)新部署和擴(kuò)展機(jī)制。這種新體驗(yàn)與 NPM 全局工具非常相似,并且受到 NPM 全局工具的啟發(fā)。
對(duì)于預(yù)覽版2,全局工具的語(yǔ)法已更改,如以下示例中所示:
dotnet tool install -g dotnetsay dotnetsay您可以通過(guò)查看 donetsay 工具示例 來(lái)創(chuàng)建自己的全局工具,(在安裝.NET Core 2.1 Preview 2之后)。
新工具參數(shù)
所有工具操作現(xiàn)在都使用該dotnet tool命令。Preview 2中添加了以下新功能:
dotnet tool install - 安裝一個(gè)工具
dotnet tool update - 卸載并重新安裝工具,并對(duì)其進(jìn)行有效更新
dotnet tool uninstall - 卸載一個(gè)工具
dotnet tool list - 列出當(dāng)前安裝的工具
--tool-path - 為每個(gè)調(diào)用指定一個(gè)特定的位置以(un)安裝和列出工具
次要版本前滾
從2.0開(kāi)始可以在相同主要版本范圍內(nèi)較新運(yùn)行時(shí)版本上運(yùn)行 .NET Core 應(yīng)用程序。您可以在.NET Core 2.1 Preview 1文章中了解有關(guān)該行為的更多信息。
但是,.NET Core對(duì)于預(yù)覽版具有相反的行為。包括全局工具在內(nèi)的應(yīng)用程序不會(huì)從一個(gè)預(yù)覽轉(zhuǎn)到另一個(gè)預(yù)覽,或從預(yù)覽到RTM。這意味著您需要發(fā)布全局工具的新版本以支持后期預(yù)覽和RTM。
預(yù)覽策略有點(diǎn)爭(zhēng)議。背后的原因是我們可能會(huì)在給定的預(yù)覽版和最終的RTM版之間做出破壞性的變更。這一策略使我們能夠做到這一點(diǎn),同時(shí)盡量減少生態(tài)系統(tǒng)的破損。還有一種可能的情況是,為預(yù)覽而構(gòu)建的軟件沒(méi)有使用RTM構(gòu)建進(jìn)行測(cè)試,但是,這種基本原理不太引人注目。
自.NET Core項(xiàng)目啟動(dòng)以來(lái),該策略已經(jīng)實(shí)施。全局工具使其更具挑戰(zhàn)性。我們非常感謝您對(duì)此的反饋和洞察力。
Sockets 性能和 SocketsHttpHandler
我們對(duì).NET Core 2.1中的Sockets 進(jìn)行了重大改進(jìn)。Sockets 是傳出和傳入網(wǎng)絡(luò)通信的基礎(chǔ)。.NET Core 2.1中的更高層級(jí)網(wǎng)絡(luò) API(包括HttpClient和Kestrel)現(xiàn)在基于.NET sockets.。在早期版本中,這些更高級(jí)別的API基于原生網(wǎng)絡(luò)實(shí)現(xiàn)。
我們從頭建立了一個(gè)新的管理的HttpMessageHandler,叫做SocketsHttpHandler。它是基于.NET套接字和Span <T>的HttpMessageHandler的實(shí)現(xiàn)。
SocketsHttpHandler現(xiàn)在是HttpClient的默認(rèn)實(shí)現(xiàn)。SocketsHttpHandler最大的成就就是性能。它比現(xiàn)有的實(shí)現(xiàn)快得多。還有其他好處,例如:
消除了libcurl(用于Linux和MacOS)和WinHTTP(用于Windows)的平臺(tái)依賴關(guān)系- 簡(jiǎn)化了開(kāi)發(fā),部署和服務(wù)。
跨平臺(tái)和平臺(tái)/依賴版本的一致行為。
您可以使用以下某種機(jī)制來(lái)配置進(jìn)程以使用舊版本HttpClientHandler:
從代碼中,使用AppContext類:
AppContext.SetSwitch(“System.Net.Http.UseSocketsHttpHandler”,false);AppContext開(kāi)關(guān)也可以通過(guò)配置文件進(jìn)行設(shè)置。
通過(guò)環(huán)境變量也可以達(dá)到同樣的效果DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER。要退出,請(qǐng)將該值設(shè)置為false或0。
在Windows上,您可以選擇使用WinHttpHandler或SocketsHttpHandler以逐個(gè)調(diào)用為基礎(chǔ)。為此,請(qǐng)實(shí)例化其中一種類型,然后在實(shí)例化時(shí)將其傳遞給HttpClient。
在Linux和MacOS上,您只能在進(jìn)程基礎(chǔ)上配置HttpClient。在Linux上,如果您想使用舊的HttpClient實(shí)現(xiàn),則需要自己部署libcurl。如果您的計(jì)算機(jī)上安裝了.NET Core 2.0,則libcurl已安裝。
自包含的應(yīng)用程序服務(wù)
dotnet publish 現(xiàn)在用服務(wù)運(yùn)行時(shí)版本發(fā)布自包含應(yīng)用程序。當(dāng)您使用新SDK發(fā)布自包含應(yīng)用程序時(shí),您的應(yīng)用程序?qū)揝DK已知的最新服務(wù)運(yùn)行時(shí)版本。當(dāng)您升級(jí)到最新的SDK時(shí),您將使用最新的.NET Core運(yùn)行時(shí)版本進(jìn)行發(fā)布。這適用于.NET Core 1.0運(yùn)行時(shí)和更高版本。
自包含發(fā)布依賴于NuGet.org上的運(yùn)行時(shí)版本。你不需要在你的機(jī)器上有服務(wù)運(yùn)行時(shí)。
使用.NET Core 2.0 SDK,自包含應(yīng)用程序?qū)⑴c.NET Core 2.0.0 Runtime一起發(fā)布,除非通過(guò)RuntimeFrameworkVersion屬性指定了不同的版本。有了這種新行為,您將不再需要設(shè)置此屬性來(lái)為自包含應(yīng)用程序選擇更高的運(yùn)行時(shí)版本。最簡(jiǎn)單的方法是始終使用最新的SDK發(fā)布。
Docker
我們正在整合我們用于.NET Core和ASP.NET Core的一系列Docker Hub存儲(chǔ)庫(kù)。我們將使用microsoft / dotnet作為我們唯一的.NET Core資源庫(kù)。
公開(kāi)可用的統(tǒng)計(jì)數(shù)據(jù)表明,大多數(shù)用戶已經(jīng)在使用dotnet回購(gòu),正如您通過(guò)以下泊塢扣拉取徽章所看到的那樣:
microsoft/dotnet ->
microsoft/aspnetcore ->
microsoft/aspnetcore-build ->
您可以通過(guò)aspnet / announcements#298了解有關(guān)此更改以及如何適應(yīng)的更多信息。
我們還為.NET Core Docker鏡像添加了一組環(huán)境變量,適用于2.0及更高版本。這些環(huán)境變量可以讓更多方案無(wú)需其他配置即可工作,例如在容器中開(kāi)發(fā)ASP.NET Core應(yīng)用程序。
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
注意:這些環(huán)境變量將在本月晚些時(shí)候添加到2.0 鏡像中。
支持的操作系統(tǒng)和芯片架構(gòu)
最大的補(bǔ)充是支持Ubuntu 18.04并增加了官方的ARM32支持。
我們將支持 .NET Core 2.1 的以下操作系統(tǒng)版本:
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 支持仍在預(yù)覽中。
我們將支持以下芯片架構(gòu):
在Windows上:x64和x86
在Linux上:x64和ARM32
在macOS上:x64
Azure應(yīng)用服務(wù)和VSTS部署
ASP.NET Core 2.1預(yù)覽不會(huì)自動(dòng)部署到Azure App Service。相反,您可以選擇僅使用一點(diǎn)點(diǎn)配置來(lái)使用.NET Core預(yù)覽。有關(guān)更多信息,請(qǐng)參閱在Azure應(yīng)用程序服務(wù)上使用ASP.NET Core預(yù)覽。
Visual Studio Team Service對(duì).NET Core 2.1的支持將更接近RTM。
.NET Core 2.1 Preview 1 的關(guān)鍵改進(jìn)
有一些重要的改進(jìn)對(duì)于從.NET Core 2.1 Preview 1中重述很重要。有關(guān)更多詳細(xì)信息,請(qǐng)參閱.NET Core 2.1 Preview 1 Announcement。
次要版本前滾
Span, Memory and friends
Windows Compatibility Pack
結(jié)束
請(qǐng)使用.NET Core 2.1 Preview 2測(cè)試您的現(xiàn)有應(yīng)用程序。預(yù)先感謝您嘗試一下。我們需要您的反饋,在最終的2.1版本中通過(guò)線上的這些新功能測(cè)試到達(dá)終點(diǎn)。
.NET Core 2.1是.NET Core 2.0向前邁進(jìn)的一大步。我們希望您找到能夠讓您升級(jí)的多項(xiàng)改進(jìn)。
再一次感謝所有為發(fā)布做出貢獻(xiàn)的人。我們非常感謝您貢獻(xiàn)的所有問(wèn)題和PR,幫助您制作此預(yù)覽版。
原文地址 http://www.cnblogs.com/shanyou/p/8809962.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.NET Core 2.1 Preview 2发布 - April 10, 2018的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 容器化的 DevOps 工作流
- 下一篇: 用C#(.NET Core) 实现简单工