IT之家1月2日消息 在微軟Connect(); 2018大會(huì)上,微軟宣布推出.NET Core 3預(yù)覽版,使用Visual Studio 2019預(yù)覽版、Visual Studio for Mac以及Visual Studio Code均可開(kāi)發(fā).NET Core 3應(yīng)用程序。.NET Core 3的面世,是一次重大更新。
微軟官方帶來(lái)了關(guān)于.NET Core 3的新功能搶鮮體驗(yàn)介紹:
.NET Framework 4.8
Microsoft Connect(); 2018上,微軟宣布將于明年發(fā)布.NET Framework 4.8。隨著支持4K和8K分辨率的顯示器的普及,微軟正在對(duì)WPF和Windows Forms升級(jí),以對(duì)高DPI提供更好的支持。目前,許多.NET Core應(yīng)用都是基于舊版本Internet Explorer和Windows Media Player的瀏覽器和媒體控件。微軟正在添加使用Windows 10中最新瀏覽器和媒體播放器的新控件,并支持最新標(biāo)準(zhǔn)。WPF和Windows Forms應(yīng)用程序?qū)⒖梢酝ㄟ^(guò)XAML Islands訪問(wèn)Windows UI XAML庫(kù)(WinUI),以獲得現(xiàn)代化的外觀和觸摸支持。Visual Studio 2019基于.NET Framework并應(yīng)用了許多此類(lèi)功能。
Windows桌面進(jìn)入.NET Core
.NET Core的前兩個(gè)版本主要側(cè)重于支持Web應(yīng)用、Web API、IoT和控制臺(tái)應(yīng)用程序。.NET Core 3增加了對(duì)使用WPF和Windows Forms框架以及現(xiàn)代控件構(gòu)建Windows桌面應(yīng)用程序的支持,并能夠?qū)崿F(xiàn)XAML Islands從Windows UI XAML庫(kù)(WinUI)構(gòu)建Fluent樣式。目前有許多桌面應(yīng)用使用Entity Framework進(jìn)行數(shù)據(jù)訪問(wèn),因此,微軟也在.NET Core 3中支持Entity Framework 6。這些框架能夠讓構(gòu)建Windows桌面應(yīng)用的開(kāi)發(fā)人員充分利用.NET Core中的新功能,例如并行(side by side)部署、自包含應(yīng)用、CoreFX的最新改進(jìn)等等。
開(kāi)源的WPF、Windows Forms和WinUI
大會(huì)上宣布WPF、Windows Forms和WinUI開(kāi)源,即三個(gè)主要的 Windows UX技術(shù)都將開(kāi)源。這是史無(wú)前例的創(chuàng)舉,整個(gè)社區(qū)都將公開(kāi)的看到WPF、Windows Forms和WinUI的進(jìn)展,第一批代碼將在GitHub上發(fā)布,未來(lái)幾個(gè)月還會(huì)發(fā)布更多代碼,這讓全球開(kāi)發(fā)者無(wú)比驚喜。
WPF和Windows Forms
WPF和Windows Forms現(xiàn)在可以與.NET Core一起使用。它們出現(xiàn)在一個(gè)名為“Windows桌面”的新組件中,該組件是Windows版本的SDK的一部分。
開(kāi)發(fā)者可以從命令行創(chuàng)建針對(duì)WPF和Windows Forms的新.NET Core項(xiàng)目。如:
dotnet new wpf dotnet new winforms
創(chuàng)建項(xiàng)目后,就可以通過(guò)dotnet來(lái)運(yùn)行它們。下圖示出了新的WPF應(yīng)用看起來(lái)是什么樣子。
Windows Forms也非常相似,如下圖所示。
同時(shí)還可以在Visual Studio 2019預(yù)覽版1中打開(kāi)、啟動(dòng)和調(diào)試WPF和Windows Forms項(xiàng)目。
應(yīng)用現(xiàn)在默認(rèn)具有可執(zhí)行文件
.NET Core應(yīng)用現(xiàn)在使用可執(zhí)行文件進(jìn)行構(gòu)建。對(duì)于使用全局安裝的.NET Core版本的應(yīng)用而言,這是一項(xiàng)新功能。到目前為止,只有自包含的應(yīng)用具有可執(zhí)行文件。對(duì)于這些可執(zhí)行文件,開(kāi)發(fā)者可以期待它們與其他本地可執(zhí)行文件具有相同的特性,例如:
您可以雙擊可執(zhí)行文件。
您可以從命令提示符下啟動(dòng)應(yīng)用,而無(wú)需使用dotnet工具。在Windows上使用myconsole.exe,在Linux和macOS上使用./myconsole。正如以下示例所示。
在Windows中:
C:\Users\rlander\myconsole>dotnet build C:\Users\rlander\myconsole>cd bin\Debug\netcoreapp3.0 C:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0>dir /b myconsole.deps.json myconsole.dll myconsole.exe myconsole.pdb myconsole.runtimeconfig.dev.json myconsole.runtimeconfig.json C:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0>myconsole.exe Hello World! C:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0>dotnet myconsole.dll Hello World!
■ 在Linux中(在macOS中也相似):
root@cc08212a1da6:/myconsole# dotnet build root@cc08212a1da6:/myconsole# cd bin/Debug/netcoreapp3.0/ root@cc08212a1da6:/myconsole/bin/Debug/netcoreapp3.0# ls myconsole myconsole.dll myconsole.runtimeconfig.dev.json myconsole.deps.json myconsole.pdb myconsole.runtimeconfig.json root@cc08212a1da6:/myconsole/bin/Debug/netcoreapp3.0# ./myconsole Hello World! root@cc08212a1da6:/myconsole/bin/Debug/netcoreapp3.0# dotnet myconsole.dll Hello World!
提供的可執(zhí)行文件與您正在使用的SDK的環(huán)境相匹配。我們還沒(méi)有啟動(dòng)為其他運(yùn)行時(shí)環(huán)境指定-r參數(shù)的功能。
dotnet build現(xiàn)在可以復(fù)制依賴(lài)項(xiàng)
dotnet build現(xiàn)在可以在構(gòu)建操作期間把應(yīng)用的NuGet依賴(lài)項(xiàng)從NuGet緩存中復(fù)制到構(gòu)建輸出文件夾中。在此版本之前,這些依賴(lài)項(xiàng)僅作為dotnet publish(發(fā)布)的一部分進(jìn)行復(fù)制。此更改能夠通過(guò)xcopy命令將構(gòu)建輸出復(fù)制到不同的計(jì)算機(jī)中。
還有一些操作,例如linking(鏈接)和razor page publishing(刀片頁(yè)面發(fā)布),仍然需要發(fā)布。
可以在以下示例中看到新體驗(yàn):
C:\Users\rlander\myconsole>dotnet add package Newtonsoft.json C:\Users\rlander\myconsole>dotnet build C:\Users\rlander\myconsole>dir /b bin\Debug\netcoreapp3.0\*.dll myconsole.dll Newtonsoft.Json.dll
本地dotnet工具
.NET Core工具已進(jìn)行了更新,現(xiàn)在包含了一套本地工具場(chǎng)景。微軟在.NET Core 2.1中添加了全局工具??梢詮臋C(jī)器上的任何位置為當(dāng)前用戶(hù)提供全局工具。這項(xiàng)功能很好,但這不允許根據(jù)位置(通常是存儲(chǔ)庫(kù))來(lái)選擇版本,而且它們也沒(méi)有提供一種簡(jiǎn)單的方法來(lái)恢復(fù)開(kāi)發(fā)環(huán)境或構(gòu)建工具環(huán)境。磁盤(pán)上的特定位置現(xiàn)在可以與一組本地工具及其版本相關(guān)聯(lián)。本地工具依賴(lài)于名為 dotnet-tools.json 的工具清單文件。我們建議在存儲(chǔ)庫(kù)的根目錄中提供工具清單文件。
對(duì)于將全局工具添加到工具清單文件(通常是存儲(chǔ)庫(kù))中以及克隆包含全局工具的存儲(chǔ)庫(kù),本地工具提供了不同的體驗(yàn)。如果您克隆包含本地工具的repo(存儲(chǔ)庫(kù)),則只需運(yùn)行以下命令:
dotnet tool restore
恢復(fù)之后,可以使用以下命令調(diào)用本地工具:
dotnet tool run
調(diào)用本地工具時(shí),dotnet會(huì)在目錄結(jié)構(gòu)中搜索清單。當(dāng)找到工具清單文件后,就在其中搜索所請(qǐng)求的工具。如果找到了該工具,它將包含在NuGet全局包位置中查找該工具所需要的信息。
在預(yù)覽版1之后,微軟將提供一種機(jī)制來(lái)創(chuàng)建工具清單文件,可能會(huì)通過(guò)dotnet新模板來(lái)實(shí)現(xiàn)。對(duì)于預(yù)覽版1,您必須利用以下內(nèi)容來(lái)創(chuàng)建文件名dotnet-tools.json:
創(chuàng)建清單之后,可以使用以下命令向其中添加本地工具:
dotnet tool install
要想從工具清單文件中刪除工具,請(qǐng)運(yùn)行以下命令:
dotnet tool uninstall
如果將工具清單文件簽入到您的源代碼控制中,則克隆您的存儲(chǔ)庫(kù)(repo)的程序員可以如上所述訪問(wèn)正確的工具。
快速收件箱JSON閱讀器簡(jiǎn)介
System.Text.Json.Utf8JsonReader 是一款高性能、低分配、僅前向(forward-only)的讀取器,用于UTF-8編碼的JSON文本,從 ReadOnlySpan
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。