后羿SEO,兴化杨健,爱神的黑白羽翼歌曲
环境
首先要下载.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。如以下几个是需要重新引用的:
在我的项目中,我引用了这些:
<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.windowsdesktop"> <propertygroup> <outputtype>winexe</outputtype> <targetframework>netcoreapp3.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>
移植过程中遇到的问题
.net core不支持access数据库
我的代码中有带access数据库相关代码,都报了缺少程序集引用的错误,因此我初步增加了引用
<itemgroup> <reference include="system.data"/> <reference include="system.data.oledb"/> </itemgroup>
但是还是没用,参考了.net core data access, core不支持access的原因,因此都把这段代码用条件编译代码 #if 给包起来了。
缺少hostfxr.dll文件
编译成功后运行项目发现弹这个窗口,我查了下c:\program files\dotnet文件中是存在hostfxr.dll的,看了环境变量也是手动设置了dotnet_root变量的,但是总是出错,没办法,最后通过复制hostfxr.dll文件到bin\debug\netcoreapp3.0\下才运行成功
到此这篇关于如何将winform移植到.net core 3.0的文章就介绍到这了,更多相关winform移植到.net core 3.0内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论