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.0
- Serilog.Sinks.Async - 1.4.0->- 1.5.0
- Microsoft.AspNetCore.Authentication.JwtBearer - 5.0.*->- 7.0.0
- Microsoft.AspNetCore.DataProtection.StackExchangeRedis - 5.0.*->- 7.0.0
- Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite - 1.0.0-beta.3->- 2.0.0-*
- Microsoft.EntityFrameworkCore.Tools - 5.0.12->- 7.0.1
- Microsoft.Extensions.FileProviders.Embedded - 6.0.5->- 7.0.0
- Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite - 1.0.0-beta.3->- 2.0.0
- Serilog.Extensions.Logging - 3.0.1->- 3.1.0
- Serilog.Sinks.Async - 1.4.0->- 1.5.0
- Serilog.Sinks.File - 4.1.0->- 5.0.0
- Serilog.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 ... 
随机推荐
- HFS局域网分享文件的神器(附下载链接)
			温馨提示,下载链接在页末 前言 假如说你需要传递个学习资料给好基友,我们有许多种方式可选:硬盘媒介.网络分享等. 要是论速度,还是得拿3.0或以上的U盘来拷贝,确实神速哈哈.但是其也有局限性,比如需要 ... 
- servlet过滤器--使用过滤器统计网站访问人数的计数(注解形式)
			文章目录 1.什么是过滤器? 2.过滤器核心对象 3.过滤器创建和配置 4.举例子 1.什么是过滤器? 主要用于对客户端的请求进行过滤处理,再将经过过滤后的请求转交给下一个资源. 2.过滤器核心对象 ... 
- 不妨试试更快更小更灵活Java开发框架Solon
			@ 目录 概述 定义 性能 架构 实战 Solon Web示例 Solon Mybatis-Plus示例 Solon WebSocket示例 Solon Remoting RPC示例 Solon Cl ... 
- 基于GA遗传算法的TSP旅行商问题求解
			import random import math import matplotlib.pyplot as plt import city class no: #该类表示每个点的坐标 def __in ... 
- C#中下载项目中的文件
			1.将需要下载的文档添加到项目的文件夹中 2.接口部分 public IActionResult DownLoad() { var filePath = Directory.GetCurrentDir ... 
- 【lwip】07-链路层收发以太网数据帧源码分析
			目录 前言 7.1 链路层概述 7.2 MAC地址的基本概念 7.3 以太网帧结构 7.4 以太网帧结构 7.5 以太网帧报文数据结构 7.6 发送以太网数据帧 7.7 接收以太网数据帧 7.8 虚拟 ... 
- .Net 7里的函数.Ctor和.CCtor是干啥用的呢?你知道吗
			楔子 有小伙伴被面试官问到这个问题,本篇彻底解析下这个问题. 为了彻底点,注意本篇是最底层的.Net 7 RC CLR运行模型(汇编)为基础进行全局剖析,局部业务分析. 如有疏漏,请斧正. 目的非手段 ... 
- 秀++视频算法仓库-厂家对接规约V5
			一.概要 (1)每个算法厂家在秀++云平台上会有一个厂商标识,譬如CS101:算法厂家可能有多个算法引擎,每个引擎有一个标识譬如Q101,引擎可以理解为一个可执行程序,可以同时分析多路算法:每个算法在 ... 
- 我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)
			最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring ... 
- 【题解】UVA10228 A Star not a Tree?
			题面传送门 解决思路 本题数据范围较小,可以使用模拟退火算法(随机化). 顾名思义,模拟退火就是一个类似于降温的过程.先设置一个较大的初温,每次随机改变状态,若使答案更优,则采取更优答案,否则根据其与 ... 
