ASP.NET Core3.1迁移到6.0的方法

这篇文章主要介绍了从ASP.NET Core3.1迁移到6.0的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们来一起学习进步吧

11月中旬,微软官方已经发布了dotnet 6的lts版

dotnet core经过前几个版本的发展和沉淀,到3.1已经基本趋于稳定。

所以从 .net core 3.1升级到.net 6将非常简单,确定你使用的vs是 Visual Studio 2022 或更高版本
下面咱们就开始吧:

在global.json中更新 .NET Core SDK 版本 (没有此文件可以忽略)

{
"sdk": {
"version": "6.0"
}
}

更新项目文件目标框架

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
  <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>

重新包引用

在项目文件中,将每个 Microsoft.AspNetCore.* 和 Microsoft.Extensions.* 包引用的 Version 属性更新为6.0.0 或更高版本。

更新 Docker 镜像

对于使用 Docker 的应用,请使用包含 dotnet 6.0 的基本镜像。 例如:
原来

mcr.microsoft.com/dotnet/aspnet:3.1
mcr.microsoft.com/dotnet/sdk:3.1

现在

mcr.microsoft.com/dotnet/aspnet:6.0
mcr.microsoft.com/dotnet/sdk:6.0

从3.1版迁移到6.0版的重大更改

那从dotnet core 3.1 到 dotnet 6 的lts版 有哪些重大更改呢?

其实也并不多,主要集中在以下几点:

  1. Azure:删除了Microsoft前缀的Azure集成程序包

  2. SignalR:MessagePack集线器协议已移至MessagePack 2.x程序包

  3. SignalR:UseSignalR和UseConnections方法已删除

可以会有的坑

  1. Core WebApi框架模板项目中默认集成了swagger,这个是新增的,但之前项目有一些自定义配置和扩展,也导致了冲突。

  2. 想尝试C#10体验下新语法新特性需要花了一些时间。

  3. 【容器内运行需要注意】项目升级完发现的Bug,DateTime这个天天见的值出现了变化,在 ASP.NET Core 3.1 及更早版本中,DateTime绑定的是服务器本地时间,而5.0之后,DateTime绑定的是UTCTime。当前时间问题解决方式:https://github.com/dotnet/dotnet-docker/issues/3237

posted @ 2022-02-18 15:43  Arthur·Wang  阅读(1130)  评论(0编辑  收藏  举报