如何将Winform移植到.NET Core 3.0
网络编程 2021-07-04 22:41www.168986.cn编程入门
这篇文章主要介绍了如何将Winform移植到.NET Core 3.0,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
参考
环境
要下载 与
编辑 csproj 文件
<Project Sdk="Microsoft.NET.Sdk.WindowsDesk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>coreapp3.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="45" /> <package id="EntityFramework" version="6.0.0" targetFramework="45" /> <package id="MySql.Data" version="6.7.9" targetFramework="45" /> <package id="System.Data.SQLite" version="1.0.108.0" targetFramework="45" /> <package id="System.Data.SQLite.Core" version="1.0.108.0" targetFramework="45" /> <package id="System.Data.SQLite.EF6" version="1.0.108.0" targetFramework="45" /> <package id="System.Data.SQLite.Linq" version="1.0.108.0" targetFramework="45" /> </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是 . framework独有,而 . 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文档和实例化描述的对象图的能力。
在我的项目中,我引用了这些
<ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Xaml"/> <Reference Include="System.Transactions"/> <Reference Include="System.Drawing"/> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Net.Http" /> </ItemGroup>
增加其他文件
增加了如下几个项目本身就有的文件
<ItemGroup> <None Include="App_Data\data.db" /> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> </ItemGroup> <ItemGroup> <None Include="App.config"> <SubType>Designer</SubType> </None> </ItemGroup>
最终的csproj文件
<Project Sdk="Microsoft.NET.Sdk.WindowsDesk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>coreapp3.0</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> <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> <ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Xaml"/> <Reference Include="System.Transactions"/> <Reference Include="System.Drawing"/> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Net.Http" /> </ItemGroup> <ItemGroup> <None Include="App_Data\data.db" /> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> </ItemGroup> <ItemGroup> <None Include="App.config"> <SubType>Designer</SubType> </None> </ItemGroup> </Project>
移植过程中遇到的问题
. core不支持Aess数据库
我的代码中有带Aess数据库相关代码,都报了缺少程序集引用的错误,我初步增加了引用
<ItemGroup> <Reference Include="System.Data"/> <Reference Include="System.Data.OleDb"/> </ItemGroup>
还是没用,参考了, core不支持Aess的原因,都把这段代码用条件编译代码 #if 给包起来了。
缺少hostfxr.dll文件
编译成功后运行项目发现弹这个窗口,我查了下C:\Program Files\dot文件中是存在hostfxr.dll的,看了环境变量也是手动设置了DOTNET_ROOT变量的,总是出错,没办法,通过复制hostfxr.dll文件到bin\Debug\coreapp3.0\下才运行成功
到此这篇关于如何将Winform移植到.NET Core 3.0的文章就介绍到这了,更多相关Winform移植到.NET Core 3.0内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程