Ken的杂谈
  • Ken的杂谈 (current)
  • 关于
  • 杂谈
    Java Spring Spring Boot Spring Cloud MyBatis C# .NET Core .NET ASP.NET Core ASP.NET ClassLibrary Mono 数据库 MySQL SQL Server 网络 缓存 Web Linux CentOS Ubuntu macOS Nginx Windows ServiceStack JS/JQ 正则 工具 IDE Grafana Exceptions CI/CD Solution 微服务 Arch Docker 杂谈
  • 系列
    Java 快速入门系列教程 Spring Boot 入门教程 Spring Boot 2.x 入门教程 Spring Cloud 入门教程 .NET Core 快速入门教程 ASP.NET Core 2.1 入门教程 CentOS 7 快速上手教程 Ubuntu快速上手入门教程 Hyper-V基础教程 Docker入门教程
  • GitHub

Ken的杂谈从ASP.NET Core 3.1迁移到5.0

.NET Core ASP.NET Core 杂谈 @ 2020-11-25 00:20:36 · 阅读:(3742)

一、前言

2016年,微软发布了 .NET Core 1.0,作为 .NET Framework的跨平台版本,并抽象除了 .NET Standard 作为公共的类库,自此之后, .NET Core、.NET Framework、XAMARIN成了三兄弟,分别为不同的平台服务

2020年,微软发布了大一统的.NET 5,支持桌面、Web、移动端、IoT等等应用的开发,也有了VS For Mac和VS Code
这样比较完善的在非Windows平台开发的工具

作为用 ASP.NET Core开发的网站,必须升级这重要的版本

二、升级过程

1、修改Project目标框架

修改 .csproj文件,把目标框架从netcoreapp3.1修改为netcoreapp5.0

  • 通用类库
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <!--<TargetFramework>netcoreapp3.1</TargetFramework>-->
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>

</Project>
  • Web项目
<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <!--<TargetFramework>netcoreapp3.1</TargetFramework>-->
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>

</Project>

2、升级依赖的NuGet包

将项目依赖的所有NuGet包更新至最新版本

update-package <package_name>

当然,你可以用IDE提供的界面进行操作,更加便捷

3、MySQL Provider

如果项目配套使用的是MySQL数据库,而且使用的EF Core连接 MySQL Provider是Pomelo.EntityFrameworkCore.MySql,那么需要将版本升级到 5.0.0-alpha.2及以上,不然会因为缺少必要的依赖而发生异常

升级完成后需要在OptionsBuilder时指定MySQL版本

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql(Configuration.GetConnectionString("db"), 
    MySqlServerVersion.LatestSupportedServerVersion);
}

因为我MySQL使用的是8.x版本,因此我就偷懒使用了LatestSupportedServerVersion,保险起见可以指定具体的MySQL版本号(指定版本号的前两位即可)

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    //指定版本号的前两位即可
    optionsBuilder.UseMySql(Configuration.GetConnectionString("blog"), 
    MySqlServerVersion.FromString("8.0"));
}

官方截止2020/11/22支持的版本号如下:

数据库 版本
MySQL 5.7-8.0
MariaDB 10.3-10.5

三、备注

1、升级感受

整体升级还是非常平滑的,比着从 .NET Core 2.0升级到 .NET Core 3.1 还是少踩了不少坑,这也说明 .NET Core也就是现在的 .NET 5的迭代已经非常平稳了,基本上不会在出现大的改动了

小的项目,推荐升级,大一点的项目,评估好依赖组件的支持情况,以及新版本的稳定度,再进行升级

2、附录

  • https://docs.microsoft.com/en-us/aspnet/core/migration/31-to-50
  • https://docs.microsoft.com/zh-cn/aspnet/core/migration/30-to-31
  • https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30
  • https://docs.microsoft.com/zh-cn/aspnet/core/migration/21-to-22

Ken的杂谈

本文由 ken.io 创作,采用CC BY 3.0 CN协议 进行许可。 可自由转载、引用、甚至修改,但需署名作者且注明出处。

.NET Core ASP.NET Core 杂谈

随笔目录


    © Copyright 2012-2023 Ken的杂谈

    豫ICP备10025012号-1

    ASP.NET Core(6.0) on Linux