换肤

logo

logo

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

2019-01-03 09:13:16 | 来源:ithome | 作者:骑士
调用本地工具时,dotnet会在目录结构中搜索清单。当找到工具清单文件后,就在其中搜索所请求的工具。如果找到了该工具,它将包含在NuGet全局包位置中查找该工具所需要的信息。

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倍。

声明:本站原创文章版权归专门网所有,编译文章的中文版权归专门网所有,转载文章版权归原作者所有,编译和转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。转载本站作品用于非商业用途无需许可,但需注明出处为专门网,商业用途须取得本站书面授权许可。
广告合作请联系QQ755851098

我要评论

共有 0 条评论

加入51NB

资讯编辑

职位描述:

    1、负责网站资讯的编辑与发布;
    2、负责网站日常维护,喜欢策划撰写原创话题;

职位要求:

    1、 大专及以上学历;
    2、 有一定文字功底,能独立进行写作、编辑
    3、 对数码产品有浓厚兴趣,关注互联网新动态;
    4、 擅长使用新媒体运营工具;
    5、 工作具有很大灵活性,希望能发挥个人主观能动性。
请将您的简历发送至: service@51nb.com

翻译编辑

职位描述:

    翻译NotebookCheck等外媒评测文章;

职位要求:

    1、 拒绝机翻;
    2、 行文应言简意赅,考虑国内语言习惯;
    3、 能够学习使用简单的html格式代码。
请将您的简历发送至: service@51nb.com

评测编辑

职位描述:

    1、撰写数码产品相关开箱与评测;
    2、能够灵活运用外媒文章素材;

职位要求:

    没啥要求,能写出个性就行。
请将您的简历发送至: service@51nb.com

论坛编辑

职位描述:

    1、负责在论坛制造高质量的讨论话题;
    2、负责轻度的论坛板块管理工作;

职位要求:

    有玩论坛经验者优先
请将您的简历发送至: service@51nb.com

最新评论

会员登录 ×