vs中如和根据项目生成类图_迁移WPF项目到.NET Core

综述#

.NET CORE 3.0开始,桌面端支持WPF了。很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性,需要升级项目到.NET CORE 3.1。

方法#

参考官方指导,需要这么几步:

  1. 了解并更新 NuGet 依赖项:升级NuGet以使用格式。查看.NET Core或.NET Standard的顶级NuGet依赖项兼容性。将NuGet包升级到较新版本。使用.NET Portability Analyzer分析依赖项。
  2. 将项目文件迁移到新的SDK样式格式:选择是同时生成.NET Core和 .NET Framework,还是仅支持.NET Core。将相关的项目文件属性和项复制到新项目。
  3. 修复生成问题:添加对Microsoft.Windows.Compatibility兼容性包的引用。查找并修复API-level差异。删除app.config中appSettings和connectionStrings以外的部分。如有必要,重新生成自动生成的代码。
  4. 运行时测试:确认移植的应用按预期工作。注意NotSupportedException异常。

升级nuget引用#

原来的nuget使用packages.config进行管理,.netcore已经全面使用的形式,因此需要升级。

7b15ad389de1e81f7157dc16bcc7f499.png

升级会弹出一个对话框提示,全部勾选上,直接升级。最后弹出一个升级报告。

.NET Framework移植分析#

VS扩展市场查找并运行.NET Portability Analyzer以分析项目。

b15038c315f9be7180a3bcb98eec07d4.png

报告如果分析结果是

4b554be8e92c51f621c5d447f67170d7.png

这个样子的,那就没问题。特别关注一下.NET CORE,如果不支持,需要想想别的办法:

  1. 替换这个引用/方法
  2. 升级对应的包

升级项目文件#

最关键的一步来了,需要升级项目文件以便于支持.NET CORE。其实步骤很简单,用vs生成一个基于.NET CORE的WPF项目,然后,直接将csproj文件拷贝到原来的项目文件夹,使用VS添加现有项目,选择这个文件,可以发现原来的东西都自动添加进来了。

不过有的项不会自动处理,我们还需要手动对照一下原来的csproj文件和新的项目csproj文件。看看是不是缺失了一些什么内容。

PackageReference不会自动处理,引用的其他项目也不会,我们需要手动粘贴进来。Resource也不会自动添加,可以使用通配符语法程序的图标需要重新添加。

编译之后出现这个错误。

eef665b7b14979cad9e1e6fe023185dd.png

.NET CORE程序会自动根据项目属性生成这个信息,如果还有AssemblyInfo.cs文件,就会冲突。二选一解决这个问题

  • 删除assemblyinfo.cs,不过原来的csproj文件将不可用。
  • 在新项目文件中添加false,禁用自动生成的功能。

修复生成问题#

有的项目处理完毕之后还有生成错误,可以考虑引用Microsoft.Windows.Compatibility来解决一些兼容性的问题。

我的项目出现了很多警告,提示项目package不兼容。

3f689d5345bbb2febd3ea99a3ce1acc4.png

如果包持续有人维护的话,一般情况重新安装一下对应的包解决这些问题。

Copyupdate-package -reinstall

还不行的话,那么有概率你的程序不能正常运行。不想冒险,就需要找找替代了。比如我手头上的程序,引用了CookComputing.XmlRpcV2这个包,不支持.NET CORE,但是在网上搜索一下,可以发现Kveer.XmlRPC是一个移植,直接换就好了。

继续运行,发现一直提示资源文件错误,WPF的Properties.Resources不好用了...有几种办法可以解决。

  1. 删除resx文件,将生成属性设置为resource并使用Uri参考
  2. 删除resx文件,将生成属性设置为Embedded Resource并使用集成资源参考
  3. 删除resx文件,将生成属性设置为Content并设置总是复制到目标目录,直接读取文件。

总结#

最后编译,我这边只有几个警告,没有错误了。鉴于程序可以正常运行,我这有空再优化吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值