从 .NET 6 更新到 .NET 7

Upgrade from .NET 6 to .NET 7

Intro

.NET 7 已经发布了一段时间了,将几个服务升级到了 .NET 7,升级还是比较顺利的,也有遇到几个问题,分享一下

TargetFramework

首先我们需要将项目文件中的目标框架(TargetFramework)从 .NET 6 更新到 .NET 7,

b0d2b77fe0a6ddb46c60dfc034d3df47.png

如果是类库项目可以考虑增加 .NET 7 的目标框架

升级之后有一些 .NET 框架相关的 NuGet 包也可以升级更新到 7.0.0

c9dd60fc2b122cf6058c54c830ff3368.png

NuGet Packages

如果项目里有用到 global.json 也要注意更新一下 SDK 的版本

a3a16f6aa5c0369a5765c8f9ee86de50.png

Global json

CI update

CI 配置也需要更新到 .NET 7 或者增加 .NET 7 的环境,我个人平时使用的比较多的是 Github Actions 和 Azure DevOps 的 Pipeline,这里以这两种为例

Github Actions 更新示例:

1ff18ab93d81f8843877133dea18b045.png

如果要配置多个版本的 SDK 也可以配置一次就可以,可以在一个 step 里配置多个 version,示例如下:

204906ccfea613848215fddc606de425.png

Azure pipeline CI 更新示例:

bc9315245609979815276bbeff44ad98.png

Azure Pipeline

这里的示例是增加了 .NET 7 的 SDK,如果 .NET 6 的环境不再需要也可以直接把 .NET 6 SDK 的配置去掉

4889a042f27308ddeafffee549737809.png

Dockerfile

如果项目里有打包 docker 镜像,更新了之后别忘记更新一下 Dockerfile 里的 base image

a9dda3fb7aa167e4f593d4458a49f764.png

CodeSpace

如果你定制了 Github 的 CodeSpace 或者有在用 devcontainer 之类的环境,如果之前是 .NET 6 的环境别忘记更新到 .NET 7 环境,将原来 .NET 6 的镜像更新到 .NET 7

aaaae626e9cdc63eb26a58f420813d95.png

dotnet-monitor

有几个项目有使用到 dotnet-monitor 来作为 sidecar 来收集应用程序的状态,升级时也遇到了点问题

主要使用的 tag 没有指定,相当于使用的是 latest,拉取最新镜像的时候拉了 dotnet-monitor:7 的镜像有一些 breaking change 导致 monitor 起不来,应用也无法启动,可以参考:https://github.com/dotnet/dotnet-monitor/issues/2892

修复办法:

  1. 指定使用 dotnet-monitor:6

  2. 使用 dotnet-monitor:7  的时候需要修改启动参数

- args: [ "--no-auth" ]
+ args: [ "collect", "--urls", "http://+:52323", "--no-auth"]

More

EF 7 更新后,有些项目里的一些更新和删除操作也可以升级为 EF 7 里的批量更新和删除操作了~

在更新一个 WPF 项目时,项目里有用到 MaterialDesignThemes 想着一起升级,升级之后有一些不兼容的变化折腾了一段时间,升级第三方的类库的时候注意看一下 breaking changes 可能会少踩一些坑

References

  • https://github.com/WeihanLi/SparkTodo/commit/dc8b854f79817b9fe657d6da1f3b00752187f0f0

  • https://github.com/WeihanLi/SparkTodo/commit/87adcc02207bd5fb35f5ae5e078c998cc0a26fa7

  • https://github.com/WeihanLi/dotnet-httpie/commit/66ef609973a932dc9e419c9530658dbd884797f7

  • https://github.com/OpenReservation/ReservationServer/commit/0be1715fceceb4ebbf8c625cb9db4ee8cddd1632

  • https://github.com/night-moon-studio/NatashaPad/pull/15

  • https://github.com/dotnet/dotnet-monitor/issues/2892

  • https://github.com/dotnet/dotnet-monitor/discussions/2864

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值