IT之家1月2日消息在微软Connect();大会上,微软宣布推出.NETCore3预览版,使用VisualStudio预览版、VisualStudioforMac以及VisualStudioCode均可开发.NETCore3应用程序。.NETCore3的面世,是一次重大更新。
微软官方带来了关于.NETCore3的新功能抢鲜体验介绍:
.NETFramework4.8
MicrosoftConnect();上,微软宣布将于明年发布.NETFramework4.8。随着支持4K和8K分辨率的显示器的普及,微软正在对WPF和WindowsForms升级,以对高DPI提供更好的支持。目前,许多.NETCore应用都是基于旧版本InternetExplorer和WindowsMediaPlayer的浏览器和媒体控件。微软正在添加使用Windows10中最新浏览器和媒体播放器的新控件,并支持最新标准。WPF和WindowsForms应用程序将可以通过XAMLIslands访问WindowsUIXAML库(WinUI),以获得现代化的外观和触摸支持。VisualStudio基于.NETFramework并应用了许多此类功能。
Windows桌面进入.NETCore
.NETCore的前两个版本主要侧重于支持Web应用、WebAPI、IoT和控制台应用程序。.NETCore3增加了对使用WPF和WindowsForms框架以及现代控件构建Windows桌面应用程序的支持,并能够实现XAMLIslands从WindowsUIXAML库(WinUI)构建Fluent样式。目前有许多桌面应用使用EntityFramework进行数据访问,因此,微软也在.NETCore3中支持EntityFramework6。这些框架能够让构建Windows桌面应用的开发人员充分利用.NETCore中的新功能,例如并行(sidebyside)部署、自包含应用、CoreFX的最新改进等等。
开源的WPF、WindowsForms和WinUI
大会上宣布WPF、WindowsForms和WinUI开源,即三个主要的WindowsUX技术都将开源。这是史无前例的创举,整个社区都将公开的看到WPF、WindowsForms和WinUI的进展,第一批代码将在GitHub上发布,未来几个月还会发布更多代码,这让全球开发者无比惊喜。
WPF和WindowsForms
WPF和WindowsForms现在可以与.NETCore一起使用。它们出现在一个名为“Windows桌面”的新组件中,该组件是Windows版本的SDK的一部分。
开发者可以从命令行创建针对WPF和WindowsForms的新.NETCore项目。如:
dotnetnewwpfdotnetnewwinforms创建项目后,就可以通过dotnet来运行它们。下图示出了新的WPF应用看起来是什么样子。
WindowsForms也非常相似,如下图所示。
同时还可以在VisualStudio预览版1中打开、启动和调试WPF和WindowsForms项目。
应用现在默认具有可执行文件
.NETCore应用现在使用可执行文件进行构建。对于使用全局安装的.NETCore版本的应用而言,这是一项新功能。到目前为止,只有自包含的应用具有可执行文件。对于这些可执行文件,开发者可以期待它们与其他本地可执行文件具有相同的特性,例如:
您可以双击可执行文件。您可以从命令提示符下启动应用,而无需使用dotnet工具。在Windows上使用myconsole.exe,在Linux和macOS上使用./myconsole。正如以下示例所示。在Windows中:
C:\Users\rlander\myconsoledotnetbuildC:\Users\rlander\myconsolecdbin\Debug\netcoreapp3.0C:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0dir/bmyconsole.deps.jsonmyconsole.dllmyconsole.exemyconsole.pdbmyconsole.runtimeconfig.dev.jsonmyconsole.runtimeconfig.jsonC:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0myconsole.exeHelloWorld!C:\Users\rlander\myconsole\bin\Debug\netcoreapp3.0dotnetmyconsole.dllHelloWorld!■在Linux中(在macOS中也相似):
root
cca1da6:/myconsole#dotnetbuildrootcca1da6:/myconsole#cdbin/Debug/netcoreapp3.0/rootcca1da6:/myconsole/bin/Debug/netcoreapp3.0#lsmyconsolemyconsole.dllmyconsole.runtimeconfig.dev.jsonmyconsole.deps.jsonmyconsole.pdbmyconsole.runtimeconfig.jsonrootcca1da6:/myconsole/bin/Debug/netcoreapp3.0#./myconsoleHelloWorld!rootcca1da6:/myconsole/bin/Debug/netcoreapp3.0#dotnetmyconsole.dllHelloWorld!提供的可执行文件与您正在使用的SDK的环境相匹配。我们还没有启动为其他运行时环境指定-r参数的功能。dotnetbuild现在可以复制依赖项
dotnetbuild现在可以在构建操作期间把应用的NuGet依赖项从NuGet缓存中复制到构建输出文件夹中。在此版本之前,这些依赖项仅作为dotnetpublish(发布)的一部分进行复制。此更改能够通过xcopy命令将构建输出复制到不同的计算机中。
还有一些操作,例如linking(链接)和razorpagepublishing(刀片页面发布),仍然需要发布。
可以在以下示例中看到新体验:
C:\Users\rlander\myconsoledotnetaddpackageNewtonsoft.jsonC:\Users\rlander\myconsoledotnetbuildC:\Users\rlander\myconsoledir/bbin\Debug\netcoreapp3.0\*.dllmyconsole.dllNewtonsoft.Json.dll本地dotnet工具
.NETCore工具已进行了更新,现在包含了一套本地工具场景。微软在.NETCore2.1中添加了全局工具。可以从机器上的任何位置为当前用户提供全局工具。这项功能很好,但这不允许根据位置(通常是存储库)来选择版本,而且它们也没有提供一种简单的方法来恢复开发环境或构建工具环境。磁盘上的特定位置现在可以与一组本地工具及其版本相关联。本地工具依赖于名为dotnet-tools.json的工具清单文件。我们建议在存储库的根目录中提供工具清单文件。
对于将全局工具添加到工具清单文件(通常是存储库)中以及克隆包含全局工具的存储库,本地工具提供了不同的体验。如果您克隆包含本地工具的repo(存储库),则只需运行以下命令:
dotnettoolrestore恢复之后,可以使用以下命令调用本地工具:
dotnettoolrun
调用本地工具时,dotnet会在目录结构中搜索清单。当找到工具清单文件后,就在其中搜索所请求的工具。如果找到了该工具,它将包含在NuGet全局包位置中查找该工具所需要的信息。
在预览版1之后,微软将提供一种机制来创建工具清单文件,可能会通过dotnet新模板来实现。对于预览版1,您必须利用以下内容来创建文件名dotnet-tools.json:
创建清单之后,可以使用以下命令向其中添加本地工具:
dotnettoolinstall
要想从工具清单文件中删除工具,请运行以下命令:
dotnettooluninstall
如果将工具清单文件签入到您的源代码控制中,则克隆您的存储库(repo)的程序员可以如上所述访问正确的工具。
快速收件箱JSON阅读器简介
System.Text.Json.Utf8JsonReader是一款高性能、低分配、仅前向(forward-only)的读取器,用于UTF-8编码的JSON文本,从ReadOnlySpan中读取。Utf8JsonReader是一种基础性的低级类型,可用于构建自定义解析器和反序列化器。使用新的Utf8JsonReader读取JSON有效负载比使用Json.NET中的读取器快2倍。