asp.net core 从 3.1 到 5.0
Intro
就在前几天,微软宣布了 .NET5 发布了 RC1 版本,这也意味着 .NET5 的开发基本稳定了,正式发布之前,不会再新增新的 Feature,只会专注于修复 BUG 提高稳定性。
对于开发者来说,RC版本的发布也意味着功能的稳定,可以上手尝尝鲜了,正式版的 API 不会再发生变化了,即使后面迁移到正式版也会很简单
于是尝试着把我之前练手的一个小项目 asp.net core webapi 的项目从 3.1 迁移到了 5.0,意想不到的顺利,要比 2.x 更新顺利的多
项目文件更新
首先需要更新项目的 TargetFramework
从原来的 netcoreapp3.1
变更到 net5.0
包引用更新
原来引用的 3.1.x 版本的 nuget 包更新成 5.0 的包
这里有几个不是 asp.net core 的包也顺带更新了
这里更新用的包版本我使用的不是具体的版本号,你也可以使用具体的版本号,都是可以的
Docker 镜像更新
docker 镜像的更新分为两部分,一个是镜像名称,一个是镜像 tag
镜像 tag 比较好说,要从 3.1 更新成 5.0
镜像名称的变化是原来的镜像名称中有一个 core
,在 net 5.0 中移除了,不再突出区分 core
了
具体的如下:
mcr.microsoft.com/dotnet/core/sdk
=> mcr.microsoft.com/dotnet/sdk
mcr.microsoft.com/dotnet/core/aspnet
=> mcr.microsoft.com/dotnet/aspnet
More
总体来说,更新还是相当顺利的,从 3.1 到 5.0,asp.net core 的 API 大多都是兼容的,没有特别大的变更(Blazor 除外,Blazor有一些大的变更), 只需要更新项目 Target 和包版本以及 dockerfile 中基本镜像的更新。
docker 镜像需要注意一下,不仅仅是改一下 tag,从 3.1 改成 5.0,最近我就是这样改的,结果提示找不到 tag,导致 build 失败了,
后来仔细看了一下,docker 镜像名称也发生了变化,移除了原来镜像名称中的 core,更好的体现了 target 的变化,无论是项目文件中的 TargetFramework
还是 docker 镜像都移除了名称中的 core,也正是体现了微软对于 .net core 的发展路线
后来突然想起来微软官方文档上应该有迁移文档,然后就赶紧去看一下,微软文档上已经有说明了 docker 镜像名称的变化(应该先看微软的官方文档才对。。。不要学我,要先看微软的文档)
Reference
https://hub.docker.com/_/microsoft-dotnet-sdk/
https://hub.docker.com/_/microsoft-dotnet-aspnet/
https://hub.docker.com/_/microsoft-dotnet/
https://docs.microsoft.com/en-us/aspnet/core/migration/31-to-50?view=aspnetcore-5.0&tabs=visual-studio
https://docs.microsoft.com/zh-cn/aspnet/core/migration/31-to-50?view=aspnetcore-5.0&tabs=visual-studio
https://github.com/WeihanLi/SparkTodo