如何将Winform移植到.NET Core 3.0

2020-03-17 14:01:11王冬梅

参考将现有应用程序移植到.NET Core 3.0

环境

首先要下载.NET Core 3.0 与Visual Studio 2019

编辑 csproj 文件

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
 <PropertyGroup>
  <OutputType>WinExe</OutputType>
  <TargetFramework>netcoreapp3.0</TargetFramework>
  <UseWindowsForms>true</UseWindowsForms>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
 </PropertyGroup>
</Project>

恢复 NuGet 包

找到package.config文件右击选择Upgrade to PackageReference 但是我会弹框


我也不知道该怎么解决,搜了一圈没搜到,如果有知道的可以在评论区告诉我,于是我就老老实实将

<?xml version="1.0" encoding="utf-8"?>
<packages>
 <package id="Dapper" version="1.50.2" targetFramework="net45" />
 <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
 <package id="MySql.Data" version="6.7.9" targetFramework="net45" />
 <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="net45" />
 <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="net45" />
 <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="net45" />
 <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="net45" />
</packages>

改为下列代码,并写到csproj文件中在 project的子节点中

<ItemGroup>
  <PackageReference Include="Dapper" Version="1.50.2" />
  <PackageReference Include="EntityFramework" Version="6.0.0" />
  <PackageReference Include="MySql.Data" Version="6.7.9" />
  <PackageReference Include="System.Data.SQLite" Version="1.0.108.0" />
  <PackageReference Include="System.Data.SQLite.Core" Version="1.0.108.0" />
  <PackageReference Include="System.Data.SQLite.EF6" Version="1.0.108.0" />
  <PackageReference Include="System.Data.SQLite.Linq" Version="1.0.108.0" />
</ItemGroup>

增加引用

同时,有些dll是 .net framework独有,而 .net core因为各种原因并没有引用进来的。参考Porting to .NET Core。如以下几个是需要重新引用的:

System.Data。虽然基础层已经是 .NET Core的一部分,即提供者模型和SQL客户端,但目前还没有一些功能,例如架构支持和DataTable/ DataSet。 System.DirectoryServices。.NET Core目前不支持与LDAP或Active Directory通信。 System.Drawing。虽然严格来说它是客户端API,但许多开发人员在服务器上使用绘图API来提供缩略图生成或水印。我们目前在 .NET Core中不支持这些API。 System.Transactions。虽然ADO.NET支持事务,但不支持分布式事务,其中包括环境事务和登记的概念。 System.Xml.Xsl和System.Xml.Schema。.NET Core支持XmlDocumentLinq XDocument,包括XPath。但是,目前不支持XSD(XmlSchema)或XSLT(XslTransform)。 System.Net.Mail。目前不支持使用这些API从 .NET Core发送电子邮件。 System.IO.Ports。.NET Core目前不包括与串行端口通信的功能。 System.Workflow。Windows Workflow Foundation(WF)目前在 .NET Core上不可用。 System.Xaml。在创建UWP应用程序时,开发人员将使用WinRT XAML API。因此,.NET Core目前不包含托管XAML框架,该框架包括解析XAML文档和实例化描述的对象图的能力。