在微软 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 的首个预览版已正式发布,而正式版本也将在今年全面推出。

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

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

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

先决条件

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

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

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

运行步骤

第1步

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

dotnet new winform -o TestWFCore

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

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

cd TestWFCore

第2步

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

dotnet add package Microsoft.Windows.Compatibility

第3步

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

dotnet run

你好.NET Core

你将看到:Hello .NET Core!

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

Visual Studio中的项目

Visual Studio中的项目

第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>

第5步

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

第6步

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

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

第7步

构建并运行应用程序:

构建并运行应用程序

Demo 示例下载

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

.NET Core 3示例

.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

最后

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

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