设置
  • 日夜间
    随系统
    浅色
    深色
  • 主题色

重磅!微软.NET Core 3预览版和开源Windows桌面框架新功能抢先看

2019/1/2 21:14:35 来源:IT之家 作者:骑士 责编:骑士

IT之家1月2日消息 在微软Connect(); 2018大会上,微软宣布推出.NET Core 3预览版,使用Visual Studio 2019预览版、Visual Studio for Mac以及Visual Studio Code均可开发.NET Core 3应用程序。.NET Core 3的面世,是一次重大更新。

微软官方带来了关于.NET Core 3的新功能抢鲜体验介绍:

.NET Framework 4.8

Microsoft Connect(); 2018上,微软宣布将于明年发布.NET Framework 4.8。随着支持4K和8K分辨率的显示器的普及,微软正在对WPF和Windows Forms升级,以对高DPI提供更好的支持。目前,许多.NET Core应用都是基于旧版本Internet Explorer和Windows Media Player的浏览器和媒体控件。微软正在添加使用Windows 10中最新浏览器和媒体播放器的新控件,并支持最新标准。WPF和Windows Forms应用程序将可以通过XAML Islands访问Windows UI XAML库(WinUI),以获得现代化的外观和触摸支持。Visual Studio 2019基于.NET Framework并应用了许多此类功能。

Windows桌面进入.NET Core

.NET Core的前两个版本主要侧重于支持Web应用、Web API、IoT和控制台应用程序。.NET Core 3增加了对使用WPF和Windows Forms框架以及现代控件构建Windows桌面应用程序的支持,并能够实现XAML Islands从Windows UI XAML库(WinUI)构建Fluent样式。目前有许多桌面应用使用Entity Framework进行数据访问,因此,微软也在.NET Core 3中支持Entity Framework 6。这些框架能够让构建Windows桌面应用的开发人员充分利用.NET Core中的新功能,例如并行(side by side)部署、自包含应用、CoreFX的最新改进等等。

开源的WPF、Windows Forms和WinUI

大会上宣布WPF、Windows Forms和WinUI开源,即三个主要的 Windows UX技术都将开源。这是史无前例的创举,整个社区都将公开的看到WPF、Windows Forms和WinUI的进展,第一批代码将在GitHub上发布,未来几个月还会发布更多代码,这让全球开发者无比惊喜。

WPF和Windows Forms

WPF和Windows Forms现在可以与.NET Core一起使用。它们出现在一个名为“Windows桌面”的新组件中,该组件是Windows版本的SDK的一部分。

开发者可以从命令行创建针对WPF和Windows Forms的新.NET Core项目。如:

dotnet new wpf
dotnet new winforms

创建项目后,就可以通过dotnet来运行它们。下图示出了新的WPF应用看起来是什么样子。

Windows Forms也非常相似,如下图所示。

同时还可以在Visual Studio 2019预览版1中打开、启动和调试WPF和Windows Forms项目。

应用现在默认具有可执行文件

.NET Core应用现在使用可执行文件进行构建。对于使用全局安装的.NET Core版本的应用而言,这是一项新功能。到目前为止,只有自包含的应用具有可执行文件。对于这些可执行文件,开发者可以期待它们与其他本地可执行文件具有相同的特性,例如:

  • 您可以双击可执行文件。

  • 您可以从命令提示符下启动应用,而无需使用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!

提供的可执行文件与您正在使用的SDK的环境相匹配。我们还没有启动为其他运行时环境指定-r参数的功能。

dotnet build现在可以复制依赖项

dotnet build现在可以在构建操作期间把应用的NuGet依赖项从NuGet缓存中复制到构建输出文件夹中。在此版本之前,这些依赖项仅作为dotnet publish(发布)的一部分进行复制。此更改能够通过xcopy命令将构建输出复制到不同的计算机中。

还有一些操作,例如linking(链接)和razor page publishing(刀片页面发布),仍然需要发布。

可以在以下示例中看到新体验:

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工具已进行了更新,现在包含了一套本地工具场景。微软在.NET Core 2.1中添加了全局工具。可以从机器上的任何位置为当前用户提供全局工具。这项功能很好,但这不允许根据位置(通常是存储库)来选择版本,而且它们也没有提供一种简单的方法来恢复开发环境或构建工具环境。磁盘上的特定位置现在可以与一组本地工具及其版本相关联。本地工具依赖于名为 dotnet-tools.json 的工具清单文件。我们建议在存储库的根目录中提供工具清单文件。

对于将全局工具添加到工具清单文件(通常是存储库)中以及克隆包含全局工具的存储库,本地工具提供了不同的体验。如果您克隆包含本地工具的repo(存储库),则只需运行以下命令:

dotnet tool restore

恢复之后,可以使用以下命令调用本地工具:

dotnet tool run


调用本地工具时,dotnet会在目录结构中搜索清单。当找到工具清单文件后,就在其中搜索所请求的工具。如果找到了该工具,它将包含在NuGet全局包位置中查找该工具所需要的信息。

在预览版1之后,微软将提供一种机制来创建工具清单文件,可能会通过dotnet新模板来实现。对于预览版1,您必须利用以下内容来创建文件名dotnet-tools.json:

创建清单之后,可以使用以下命令向其中添加本地工具:

dotnet tool install


要想从工具清单文件中删除工具,请运行以下命令:

dotnet tool uninstall


如果将工具清单文件签入到您的源代码控制中,则克隆您的存储库(repo)的程序员可以如上所述访问正确的工具。

快速收件箱JSON阅读器简介

System.Text.Json.Utf8JsonReader 是一款高性能、低分配、仅前向(forward-only)的读取器,用于UTF-8编码的JSON文本,从 ReadOnlySpan 中读取。Utf8JsonReader 是一种基础性的低级类型,可用于构建自定义解析器和反序列化器。使用新的Utf8JsonReader读取JSON有效负载比使用Json.NET中的读取器快2倍。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

软媒旗下网站: IT之家 最会买 - 返利返现优惠券 iPhone之家 Win7之家 Win10之家 Win11之家

软媒旗下软件: 软媒手机APP应用 魔方 最会买 要知