在微软 Build 2018 开发者大会上,.NET 团队公布了 .NET Core
的下一个主要版本 .NET Core 3.0 的规划蓝图:.NET Core
3将开始支持Windows桌面应用程序,包括Windows Form、Windows Presentation
Framework(WPF)和UWP XAML。届时在 .NET Core
3上将能运行Windows桌面应用程序,在享受 .NET
Core新架构优势便利的同时,兼容老的 .net应用。目前为止,.Net Core 3.0
的首个预览版已正式发布,而正式版本也将在今年全面推出。

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

时间: 2019-06-06阅读: 323标签: 开源

作为经典的全功能
.NET控件集,ComponentOne技术团队一直专注于行业未来的发展方向,2019年
ComponentOne 将继续增强产品功能、增加新的控件并全面兼容 .Net Core 3.0。

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

在去年的 Microsoft Connect(); 开发者大会上,微软宣布开源三种主要的
Windows UX 技术,其中就包括了 Windows Presentation Foundation
(WPF),除此之外还有 Windows Forms 和 Windows UI XAML 库 (WinUI)。

在此之前,ComponentOne
技术团队一直致力于研究框架和库的变化和兼容性。因此,在 .Net Core
3.0正式版中使用任何 ComponentOne
控件将不需要进行任何更改(由于某些类缺少,有些控件当前在 .Net Core 3.0
预览版中不起作用。要了解未解决的问题,请跳至本博客的最后一部分)。

.NET Framework 4.8

近日,微软正式将 WPF 框架的源码托管至 GitHub。

现在,我们将以 ComponentOne 其中一个Demo为例,看看如何将它移植到 .NET
Core 3.0
中,此步骤与GitHub上的步骤类似。

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库,以获得现代化的外观和触摸支持。Visual Studio 2019基于.NET
Framework并应用了许多此类功能。

Windows Presentation
Foundation(WPF)是用于构建Windows桌面应用程序的UI框架。WPF支持广泛的应用程序开发功能,包括应用程序模型,资源,控件,图形,布局,数据绑定和安全性等。WPF使用可扩展应用程序标记语言(XAML)为应用程序开发提供了统一的编程模型。

先决条件

  1. 安装 .NET Core 3.0
    SDK。选择适当您的平台下载安装程序(如果您使用的是64位操作系统,请使用x64;如果您使用的是32位操作系统,请选择x86)。

  2. 本Demo是使用VS2019运行的,您可以在此处下载预览版。

  3. 安装ComponentOne WinForms
    Edition(在此处获取免费试用版)。如果已安装本程序,则可以跳过此步骤。

Windows桌面进入.NET Core

WPF应用程序基于矢量图形架构。这使得应用程序在高DPI显示器上效果更好,因为它们可以无限地扩展。WPF还包括一个灵活的托管模型,Visual
Studio中提供的可视化设计可以轻松地通过拖放和/或直接编辑XAML标记来构建WPF应用程序。

运行步骤

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

Win Forms是另一个用于构建.NET
Core支持的Windows桌面应用程序的UI框架。WPF和WinForms应用程序仅在Windows上运行。它们是Microsoft.NET.Sdk.WindowsDesktopSDK的一部分。

第1步

考虑到VS2019预览版中的工具有限,缺少WinForms的项目模板,我们将使用命令提示符创建一个新项目。打开命令提示符并运行以下命令:

dotnet new winform -o TestWFCore

上述代码会创建一个名为TestWFCore的新项目。该项目位于c:
Users(YourAccount)下

通过命令提示符导航到项目目录

cd TestWFCore

开源的WPF、Windows Forms和WinUI

根据其公布的 Roadmap 路线图,微软正在使用WPF完成四个项目:

第2步

通过命令提示符添加Windows兼容包,如下所示:

dotnet add package Microsoft.Windows.Compatibility

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

将剩余的 WPF 组件发布到 repo

第3步

使用dotnet run运行应用程序以确保项目正常工作。

dotnet run

澳门新葡萄京所有网站 1

你将看到:Hello .NET Core!

现在我们可以在Visual Studio中打开它。

澳门新葡萄京所有网站 2

Visual Studio中的项目

WPF和Windows Forms

将源发布到GitHub。

第4步

我们将在.Net Core
3.0中运行现有示例,我们将在此位置进行移植“ComboBoxItemModes”输入示例:

〜 Documents ComponentOne Samples WinForms C1Input CS
ComboBoxItemModes

将上述示例中的所有csharp文件链接到此项目。同时包含licences.licx,它位于Properties文件夹下。

将licenses.licx文件标记为嵌入资源

大多数现有项目都包含Properties文件夹中的AssemblyInfo.cs文件。新项目样式使用不同的方法,并在构建过程中生成相同的程序集属性。要禁用该行为,可以添加属性GenerateAssemblyInfo

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <generateassemblyinfo>false</generateassemblyinfo>
</PropertyGroup>

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

将测试发布到GitHub并启用自动化测试基础架构

第5步

添加C1.Win.Input程序集的参考。

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

使Visual Studio WPF设计器能够与在.NET Core上运行的WPF一起使用

第6步

修改program.cs文件以创建Form1的实例并运行该应用程序。这类似于任何WinForms应用程序。

 class Program
    {
        static void Main()
        {
          Application.Run(new Form1());
        }
    }
dotnetnewwpfdotnetnewwinforms

至于移植状态,WPF for .NET Framework 的移植仍在进行中,所有适用于 .NET
Core 的 WPF 组件最终都将发布到此 repo。GitHub地址:

第7步

构建并运行应用程序:

澳门新葡萄京所有网站 3

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

开源最前线(ID:OpenSourceTop) 猿妹编译链接:

Demo 示例下载

按照上述步骤,我们创建了一个简单的示例,用于在 .NET Core 3.0
中运行不同的 ComponentOne 控件,段尾提供了 Demo
的下载示例。在运行示例之前,请查看自述文件。您将在以下位置找到 .NET Core
3.0 项目文件:〜 DotNetCore3Sample WinForms CS DotNetCore3
DotNetCore3

.NET Core
3示例

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

.NET Core 3.0预览中的问题

目前,由于 .NET Core 3.0 预览版尚未移植 WinForms
类,FlexGrid、TrueDbGrid、ThemeController和Command在 .NET Core 3.0
预览版中运行时会出现bug。这些bug会在下一个预览版中得到修复:

https://github.com/dotnet/corefx/pull/33452

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

最后

伴随着 .NET Core 3.0的到来,以及 WinForm 和 WPF 的开源,ComponentOne
也将迎来更多改变,针对桌面应用程序、.NET Core Web
API,ComponentOne将推出一系列全新控件和增强功能。

期待 ComponentOne 2019 将带给您更多惊喜!


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

ComponentOne Enterprise | 下载试用

ComponentOne是一款专注于企业应用高性能开发的
.NET
全功能控件套包,包含300余种控件,支持7大平台,涵盖7大功能模块。较于市面上其他同类产品,ComponentOne更加轻盈,功能更加强大,20多年的开发经验,将为您的应用系统带来更为安全的使用体验。纯中文操作界面,一对一技术支持,厂商级的技术服务,共同造就了这款国际顶级控件套包。

(文/开源中国)    

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

您可以双击可执行文件。

您可以从命令提示符下启动应用,而无需使用dotnet工具。在Windows上使用myconsole.exe,在Linux和macOS上使用./myconsole。正如以下示例所示。

C:Usersrlandermyconsole>dotnetbuildC:Usersrlandermyconsole>cdbinDebugnetcoreapp3.0C:UsersrlandermyconsolebinDebugnetcoreapp3.0>dir/bmyconsole.deps.jsonmyconsole.dllmyconsole.exemyconsole.pdbmyconsole.runtimeconfig.dev.jsonmyconsole.runtimeconfig.jsonC:UsersrlandermyconsolebinDebugnetcoreapp3.0>myconsole.exeHelloWorld!C:UsersrlandermyconsolebinDebugnetcoreapp3.0>dotnetmyconsole.dllHelloWorld!

[email protected]:/myconsole#dotnetbuild[email protected]:/myconsole#cdbin/Debug/netcoreapp3.0/[email protected]:/myconsole/bin/Debug/netcoreapp3.0#lsmyconsolemyconsole.dllmyconsole.runtimeconfig.dev.jsonmyconsole.deps.jsonmyconsole.pdbmyconsole.runtimeconfig.json[email protected]:/myconsole/bin/Debug/netcoreapp3.0#./myconsoleHelloWorld![email protected]:/myconsole/bin/Debug/netcoreapp3.0#dotnetmyconsole.dllHelloWorld!

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

dotnet build现在可以复制依赖项

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

还有一些操作,例如linking和razor page publishing,仍然需要发布。

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

C:Usersrlandermyconsole>dotnetaddpackageNewtonsoft.jsonC:Usersrlandermyconsole>dotnetbuildC:Usersrlandermyconsole>dir/bbinDebugnetcoreapp3.0*.dllmyconsole.dllNewtonsoft.Json.dll

本地dotnet工具

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

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

dotnettoolrestore

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

dotnettoolrun

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

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

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

dotnettoolinstall

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

dotnettooluninstall

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

快速收件箱JSON阅读器简介

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