ABP Framework 手动升级指南:从6.0.1升级到7.0.0
ABP 7.0.0 正式版已经发布,ABP-Framework-All-In-One 项目同步升级。
LeptonX Lite Theme 目前还没有包含在源码解决方案中,还是以 Nuget 包提供,目前已经更新到 2.0.0 。
ABP 7.0.0 最大的变化是提供 OpenIddict 应用模块,用于替换 IdentityServer 应用模块。IdentityServer 功能强大,经过多个版本迭代,在 ABP Framework 中也足够稳定,只要官方继续维护该应用模块,可以不用着急切换到 OpenIddcit 。
本文记录从 6.0.1 升级到 7.0.0 的详细过程及注意事项。
第一步:更新 ABP Framework 源码
下载最新版 ABP Framework 源码 7.0.0 到解决方案根目录,将原 abp 目录打包备份,删除该目录,然后将 abp-7.0.0 并解压重命名为 abp ,实现框架源码更新到最新。
第二步:更新 .NET 版本
该版本是跟随 .NET 7 发布之后的升级版,所以 .NET 需要升级到 7 。如果是 Dcoker 部署,需要升级镜像中采用的 SDK 版本。
查看已安装的 .NET 版本,在终端执行命令 dotnet --list-sdks。
6.0.400 [/usr/local/share/dotnet/sdk]
7.0.100 [/usr/local/share/dotnet/sdk]
修改解决方案中 global.json 文件
{
"sdk": {
"version": "7.0.100"
}
}
升级项目目标框架
项目目标框架 TargetFramework 如果为 netstandard2.0 ,不需要升级目标框架,与 .NET 7 兼容。
目标框架为 net6.0 ,都必须升级到 net7.0 。
找到应用程序项目文件 .csproj 修改:
- <TargetFramework>net6.0</TargetFramework>
+ <TargetFramework>net7.0</TargetFramework>
src 目录中包含 11 个项目,test目录中包含 5 个项目,逐一检查修改。
升级程序集版本
解决方案中还有部分项目(src 和 test 目录中的项目)中的程序集直接基于 Nuget 包引用,所引用的程序集版本应该与 ABP Framework源码项目(abp 目录中的项目)保持版本一致。
src 目录项目程序集版本升级列表:
Serilog.AspNetCore
4.1.0->5.0.0Serilog.Sinks.Async
1.4.0->1.5.0Microsoft.AspNetCore.Authentication.JwtBearer
5.0.*->7.0.0Microsoft.AspNetCore.DataProtection.StackExchangeRedis
5.0.*->7.0.0Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite
1.0.0-beta.3->2.0.0-*Microsoft.EntityFrameworkCore.Tools
5.0.12->7.0.1Microsoft.Extensions.FileProviders.Embedded
6.0.5->7.0.0Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite
1.0.0-beta.3->2.0.0Serilog.Extensions.Logging
3.0.1->3.1.0Serilog.Sinks.Async
1.4.0->1.5.0Serilog.Sinks.File
4.1.0->5.0.0Serilog.Sinks.Console
3.1.1->4.1.0
test 目录测试项目程序集版本升级类表:
- Microsoft.NET.Test.Sdk
16.9.1->17.2.0 - Microsoft.Extensions.Hosting
5.0.*->7.0.0 - Microsoft.Extensions.Http.Polly
5.0.*->7.0.0 - NSubstitute
4.2.2->4.3.0 - Shouldly
4.0.3无需升级 - xunit
2.4.1无需升级 - xunit.extensibility.execution
2.4.1无需升级 - xunit.runner.visualstudio
2.4.3->2.4.5
第三步:编译解决方案
执行 dotnet build 编译整个解决方案,编译成功。如果存在警告或错误,检查程序集版本是否设置正确。
第四步:更新数据库结构
升级 dotnet-ef 工具
dotnet tool update --global dotnet-ef
工具 dotnet-ef 升级到当前最新版本 7.0.1。
执行命令生成数据迁移脚本:
cd 'src/AbpClub.EntityFrameworkCore'
dotnet ef migrations add UpdateSeven
需要在数据库中新增四张表:
AbpFeatureGroups功能组表AbpFeatures功能表AbpPermissionGroups权限组表AbpPermissions权限表
这四张表用于功能和权限的持久化,以支持动态功能和动态权限。
在 CmsPages 表中新增列 IsHomePage ,标识是否是主页。
详细的数据库结构的改动,可以查看
AbpClub.EntityFrameworkCore项目中Migrations目录下的xxxxx_UpdateSeven类。
接下来,执行 dotnet ef database update 将数据迁移脚本更新到数据库。
第五步:升级前端包
在 AbpClub.Web 项目中找到包配置文件 packages.json,将@abp为前缀的所有NPM包升级到最新版本号。
原版本:
{
"version": "1.0.0",
"name": "abpclub",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~1.0.0",
"@abp/cms-kit": "6.0.1",
"@abp/docs": "6.0.1",
"@abp/jstree": "6.0.1",
"@abp/tui-editor": "6.0.1",
"@abp/uppy": "6.0.1",
"@abp/virtual-file-explorer": "6.0.1",
"slugify": "1.6.5",
"tui-code-snippet": "2.3.3"
}
}
升级为:
{
"version": "1.0.0",
"name": "abpclub",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0",
"@abp/cms-kit": "7.0.0",
"@abp/docs": "7.0.0",
"@abp/jstree": "7.0.0",
"@abp/tui-editor": "7.0.0",
"@abp/uppy": "7.0.0",
"@abp/virtual-file-explorer": "7.0.0",
"slugify": "1.6.5",
"tui-code-snippet": "2.3.3"
}
}
slugify和tui-code-snippet没有新版本,无需升级。
终端工具导航到 Web 项目所在目录,然后执行 abp install-libs 更新包引用。
除了 Web 项目,别忘记将 IdentityServer 项目按照同样的方式进行升级。
{
"version": "1.0.0",
"name": "my-app-identityserver",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.0.0"
}
}
第六步:功能测试
分别启动 IdentityServer HttpApi.Host 以及 Web 项目,测试应用中的功能是否都正常。
在 6.0.1 版本中存在的问题,在当前版本中已经修复:访问CMS菜单下除评论外的其他6个页面已经不会抛出异常。
- 博客:
https://localhost:44397/Cms/Blogs - 博客帖子:
https://localhost:44397/Cms/BlogPosts - 菜单:
https://localhost:44397/Cms/Menus/Items - 页面:
https://localhost:44397/Cms/Pages - 标签:
https://localhost:44397/Cms/Tags
查看源码,已经在 /Themes/LeptonXLite/Layouts/Application.cshtml 页面中修复了该Bug,设置 content_toolbar Section 为非必要渲染。
修复方式:
@await RenderSectionAsync("content_toolbar", false)
升级成功!目前的感受是,版本的稳定性进一步增强了。
本文已收录到《ABP Framework 极速开发》
ABP Framework 手动升级指南:从6.0.1升级到7.0.0的更多相关文章
- Spring Boot 2.0 升级指南
Spring Boot 2.0 升级指南 前言 Spring Boot已经发布2.0有5个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把项目中Spring Boot 版本做了升级,顺便整理下 ...
- ABP Framework 5.0 RC.1 新特性和变更说明
.Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 新 ...
- ABP Framework 5.3.0 版本新增功能和变更说明
ABP Framework 5.3.0 稳定版已在2022年6月14日正式发布. 以下是本版本的新增功能: "开始"页面提供创建单层项目选项 启动模板提供 PWA 支持 Volo. ...
- Apache ShardingSphere 5.0.0 内核优化及升级指南
经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...
- WPF NET5 Prism8.0的升级指南
前言 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Pri ...
- gcc5.1.0升级指南
请使用root权限用控制台安装gcc5.1.0(重要) 1.首先把旧的gcc相关的编译工具安装好(没有安装会导致后面的错误) yum upgrade gcc //升级gcc库 yum -y insta ...
- 企业IT管理员IE11升级指南【17】—— F12 开发者工具
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- webpack4升级指南
webpack4升级指南 鉴于图书项目编译速度极慢的情况(项目里面module太多了,编译慢很正常)且最近需求不多(很少出现的空挡期).所以我觉得搞一波webpack升级,看看有没有帮助.webpac ...
随机推荐
- 如何使用IDEA自动生成类图
然后再类里边按 Ctrl+Alt+U 然后就会生成类图,这个样子 然后怎样把生成的类图搞出来.当然是使用截图软件啦.微信上的截图软件和qq上的截图软件好像都不在阔以,你一点击截图按钮.生成的类图就会消 ...
- JS 学习笔记(一)常用的字符串去重方法
要求:从输入框中输入一串字符,按回车后输出去重后的字符串 方法一: <body> <input type="text" id="input" ...
- 修改linux系统时间
在Linux系统中,可以用date命令来显示或设定系统的日期与时间 1. 查看系统时间 [root@iZ2ze0gm3scdypc0i15r8yZ ~]# date Tue Aug 16 00:10: ...
- [leetcode] 706. Design HashMap
题目 Design a HashMap without using any built-in hash table libraries. Implement the MyHashMap class: ...
- SolidEdge ST8安装教程
SolidEdge ST8安装教程: 1.使用百度云客户端下载Solidedge ST8软件安装包,打开软件安装文件夹: 2.选择.ISO安装文件,打开.ISO安装文件,可以解压或使用虚拟光驱加载: ...
- 09 | 从容器到容器云:谈谈Kubernetes的本质
你好,我是张磊.今天我和你分享的主题是:从容器到容器云,谈谈Kubernetes的本质. 在前面的四篇文章中,我以Docker项目为例,一步步剖析了Linux容器的具体实现方式.通过这些讲解你应该能够 ...
- 第2-4-1章 规则引擎Drools介绍-业务规则管理系统-组件化-中台
目录 规则引擎 Drools 1. 问题引出 2. 规则引擎概述 2.1 什么是规则引擎 2.2 使用规则引擎的优势 2.3 规则引擎应用场景 2.4 Drools介绍 规则引擎 Drools 全套代 ...
- vivo浏览器的神奇操作
关闭 root 权限也就罢了,你还搞这种操作 看到那个源文件了吗? 只有点击源文件下载的才是 官方提供的安装包, 而你首先看到的下载,点击后会下载vivo 应用商店的安装包. 那么这两种安装包有什么区 ...
- 一次MTU问题导致的RDS访问故障
导语 VPN是一种通过公网连接两个或多个私网站点的专用网络,使得这些站点仿佛是通过专线连接在一起.IPSec是一套协议框架,用于保证数据传输的私密性,完整性,真实性.但是VPN网络经常会带来一些连通性 ...
- 更改HTML请求方式的几种方法
以ctfhub中的请求方式题目为例,则可以有: 法一:通过burpsuite抓包修改 在burpsuite中抓包后发送到repeater模块中,对请求方式进行修改即可 法二:通过curl命令进行 cu ...