一、前言
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的迭代已经非常平稳了,基本上不会在出现大的改动了
小的项目,推荐升级,大一点的项目,评估好依赖组件的支持情况,以及新版本的稳定度,再进行升级