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 个项目,逐一检查修改。

升级程序集版本

解决方案中还有部分项目(srctest 目录中的项目)中的程序集直接基于 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"
}
}

slugifytui-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的更多相关文章

  1. Spring Boot 2.0 升级指南

    Spring Boot 2.0 升级指南 前言 Spring Boot已经发布2.0有5个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把项目中Spring Boot 版本做了升级,顺便整理下 ...

  2. ABP Framework 5.0 RC.1 新特性和变更说明

    .Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 新 ...

  3. ABP Framework 5.3.0 版本新增功能和变更说明

    ABP Framework 5.3.0 稳定版已在2022年6月14日正式发布. 以下是本版本的新增功能: "开始"页面提供创建单层项目选项 启动模板提供 PWA 支持 Volo. ...

  4. Apache ShardingSphere 5.0.0 内核优化及升级指南

    经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...

  5. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  6. WPF NET5 Prism8.0的升级指南

    前言 ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Pri ...

  7. gcc5.1.0升级指南

    请使用root权限用控制台安装gcc5.1.0(重要) 1.首先把旧的gcc相关的编译工具安装好(没有安装会导致后面的错误) yum upgrade gcc //升级gcc库 yum -y insta ...

  8. 企业IT管理员IE11升级指南【17】—— F12 开发者工具

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  9. 企业IT管理员IE11升级指南【6】—— Internet Explorer 11面向IT专业人员的常见问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  10. webpack4升级指南

    webpack4升级指南 鉴于图书项目编译速度极慢的情况(项目里面module太多了,编译慢很正常)且最近需求不多(很少出现的空挡期).所以我觉得搞一波webpack升级,看看有没有帮助.webpac ...

随机推荐

  1. HFS局域网分享文件的神器(附下载链接)

    温馨提示,下载链接在页末 前言 假如说你需要传递个学习资料给好基友,我们有许多种方式可选:硬盘媒介.网络分享等. 要是论速度,还是得拿3.0或以上的U盘来拷贝,确实神速哈哈.但是其也有局限性,比如需要 ...

  2. servlet过滤器--使用过滤器统计网站访问人数的计数(注解形式)

    文章目录 1.什么是过滤器? 2.过滤器核心对象 3.过滤器创建和配置 4.举例子 1.什么是过滤器? 主要用于对客户端的请求进行过滤处理,再将经过过滤后的请求转交给下一个资源. 2.过滤器核心对象 ...

  3. 不妨试试更快更小更灵活Java开发框架Solon

    @ 目录 概述 定义 性能 架构 实战 Solon Web示例 Solon Mybatis-Plus示例 Solon WebSocket示例 Solon Remoting RPC示例 Solon Cl ...

  4. 基于GA遗传算法的TSP旅行商问题求解

    import random import math import matplotlib.pyplot as plt import city class no: #该类表示每个点的坐标 def __in ...

  5. C#中下载项目中的文件

    1.将需要下载的文档添加到项目的文件夹中 2.接口部分 public IActionResult DownLoad() { var filePath = Directory.GetCurrentDir ...

  6. 【lwip】07-链路层收发以太网数据帧源码分析

    目录 前言 7.1 链路层概述 7.2 MAC地址的基本概念 7.3 以太网帧结构 7.4 以太网帧结构 7.5 以太网帧报文数据结构 7.6 发送以太网数据帧 7.7 接收以太网数据帧 7.8 虚拟 ...

  7. .Net 7里的函数.Ctor和.CCtor是干啥用的呢?你知道吗

    楔子 有小伙伴被面试官问到这个问题,本篇彻底解析下这个问题. 为了彻底点,注意本篇是最底层的.Net 7 RC CLR运行模型(汇编)为基础进行全局剖析,局部业务分析. 如有疏漏,请斧正. 目的非手段 ...

  8. 秀++视频算法仓库-厂家对接规约V5

    一.概要 (1)每个算法厂家在秀++云平台上会有一个厂商标识,譬如CS101:算法厂家可能有多个算法引擎,每个引擎有一个标识譬如Q101,引擎可以理解为一个可执行程序,可以同时分析多路算法:每个算法在 ...

  9. 我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)

    最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring ...

  10. 【题解】UVA10228 A Star not a Tree?

    题面传送门 解决思路 本题数据范围较小,可以使用模拟退火算法(随机化). 顾名思义,模拟退火就是一个类似于降温的过程.先设置一个较大的初温,每次随机改变状态,若使答案更优,则采取更优答案,否则根据其与 ...