.NET 升级利器:Upgrade Assistant

430515368f096a43aa8659fd33467d7c.png

.NET 发展很快, 现在 .NET 8 的预览版已经发布了,但我们现在还在使用 .NET Core 3.1,将 .NET 升级到 .NET 6 已经势在必行。

记得之前从 .NET Core 2.1 升级到 .NET Core 3.1 的时候,虽然网上有很多的教程,也废了一番力气,各种配置的修改,引用的第三方的库的升级等。

现在,在 VS2022 的扩展中有一个升级的工具:.NET Upgrade Assistant ,用来做 .NET 框架的升级,非常方便。

下面来讲解下怎样使用:

1、在 VS 2022 中进行 .NET Upgrade Assistant 的安装。

838d9753e356d694424df3683107283f.jpeg

按照提示下一步即可:

64690c0ecc5075e6efb939263abd496d.jpeg

2、创建一个 .NET Core 3.1 的 WebAPI 项目,在项目上点击右键就会出现 Upgrade 按钮:

469749bbcb8cb36d6a9a6d62730fcdb8.jpeg

3、在弹窗中选择升级方式,但也只有这一个选项啊:

a83bd9c31023d1c83a5f0c2dcfe0f55e.jpeg

4、选择升级的目标版本,这里我选择 .NET 6 ,这是一个长线支持版本:

35d27e8ed0099d2da6f3d5bad8f2114f.jpeg

5、选择需要更新的内容,默认全选,点击「Upgrade selection」进行升级:

8d451ed448186639bec54f394ca3882e.jpeg

6、瞬间,升级就完成了。

10ac1c35c7de71aa63dd346cb1b0b79d.jpeg

7、上面的示例升级非常简单,我便马上尝试了产品的代码,多年的积累,产品的代码还是比较复杂的,引用的第三方库也比较多。我是按照项目的依赖关系,从最下层依次到上层进行升级,升级的过程很顺利,没有出现错误,但在编译时出现了两个错误:

  • Ionic.zip 组件出现问题;

  • Swagger 相关的代码出现问题。

Ionic.zip的问题是因为这个软件包已经被弃用,换成了 DotNet.zip 就可以了。

291998c7e2cb39a7e4b612c759dd4644.jpeg

重新安装 Swashbuckle.AspNetCore 最新的包,并按照 .NET 6 的方式注册,就可以解决 Swagger 的问题。

8、编译终于没问题了,程序启动的时候又报错了,原因是 BinaryFormatter 有安全漏洞过,已经不再支持:

53a80581302b9edde8bde652d4b5f8fb.jpeg

有两种方式可以解决这个问题,第一种是直接停止在代码中使用 BinaryFormatter。可以使用 JsonSerializer 或 XmlSerializer  进行替代,具体可以参考:

https://learn.microsoft.com/zh-cn/dotnet/core/compatibility/core-libraries/5.0/binaryformatter-serialization-obsolete

当然,如果代码中对 BinaryFormatter 依赖比较重,修改起来比较麻烦,还可以用一种兼容的方式进行处理,这是一种临时方式,不推荐,毕竟有安全漏洞。操作如下:

将下面代码加入到 Web 项目中的项目文件中:

<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
de46244a1396738ba4ad222f1d5a5dc9.jpeg

上面代码添加后,便可忽略掉 BinaryFormatter 的安全性,让程序可以正常运行。

9、处理了上面几个编译好运行问题后,产品代码就从 .NET Core 3.1 升级到 .NET 6 了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值