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. Linxu常用命令

    一.Linux权限的概念 Linux下有两种用户:普通用户和超级用户: 普通用户:在linux下做有限的事情: 超级用户:可以在linux系统下做任何事情,不受限制. 普通用户的提示符是"$ ...

  2. 【React】学习笔记(一)——React入门、面向组件编程、函数柯里化

    课程原视频:https://www.bilibili.com/video/BV1wy4y1D7JT?p=2&spm_id_from=pageDriver 目录 一.React 概述 1.1.R ...

  3. 上传数据、下载模板文件解决方案(前端:antd;后端:.Net Core WebAPI)

    一.Excel 模板下载 通过静态文件下载. 将模板文件放在根目录的 public 文件夹下备用. 下载事件方法如下:(通过临时生成一个 a 标签,触发后再移除) downLoadExcelModel ...

  4. Java基础面试总结

    常见编译型语言:C.C++.Go.Rust 等(执行速度快,但开发效率低) 常见解释型语言:Python.JavaScript.PHP(开发效率高,但执行效率低) 先编译后解释:Java 重载和重写有 ...

  5. Microsoft Office for Mac最新版本安装教程,亲测可用!!!

    办公必备的Office工具,它为需要使用 Office 工具的用户和企业设计,让他们可以利用功能强大的 Outlook 来处理电子邮件.日历和通讯录事宜.你所熟知和信赖的 Office 经过更新后,可 ...

  6. 分布式ID生成方案总结整理

    目录 1.为什么需要分布式ID? 2.业务系统对分布式ID有什么要求? 3.分布式ID生成方案 3.1 UUID 3.2.数据库自增 3.3.号段模式 3.4. Redis实现 3.4. 雪花算法(S ...

  7. Pyserial 学习

    # 连接串口 ser = serial.Serial("COM12", 115200, timeout=0.5, bytesize=8, parity=serial.PARITY_ ...

  8. jupyter初体验

    安装: 1.若是已经安装了anaconda,则通过  jupyter notebook 命令进入: 2.若是只安了python: pip3 install --upgrade pip   对pip进行 ...

  9. 【炫丽】从0开始做一个WPF+Blazor对话小程序

    大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力. 注 要使WPF支持Blazo ...

  10. 某厂面试:如何优雅使用 SPI 机制

    代码不多,文章可能有点长.朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程 产出背景 因为最近项目中使用分库分表以及数据加密使用到了 S ...