百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

ABP Framework 手动升级指南:从6.0.1升级到7.0.0

ccwgpt 2025-04-08 12:27 10 浏览 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 修改:

- net6.0
+ net7.0

src 目录中包含 11 个项目,test目录中包含 5 个项目,逐一检查修改。

升级程序集版本

解决方案中还有部分项目(srctest目录中的项目)中的程序集直接基于 Nuget 包引用,所引用的程序集版本应该与 ABP Framework源码项目(abp 目录中的项目)保持版本一致。

src 目录项目程序集版本升级列表:

  • o Serilog.AspNetCore 4.1.0 -> 5.0.0

  • o Serilog.Sinks.Async 1.4.0 -> 1.5.0

  • o Microsoft.AspNetCore.Authentication.JwtBearer 5.0.* -> 7.0.0

  • o Microsoft.AspNetCore.DataProtection.StackExchangeRedis 5.0.* -> 7.0.0

  • o Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite 1.0.0-beta.3 -> 2.0.0-*

  • o Microsoft.EntityFrameworkCore.Tools 5.0.12-> 7.0.1

  • o Microsoft.Extensions.FileProviders.Embedded 6.0.5 -> 7.0.0

  • o Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite 1.0.0-beta.3 -> 2.0.0

  • o Serilog.Extensions.Logging 3.0.1 -> 3.1.0

  • o Serilog.Sinks.Async 1.4.0 -> 1.5.0

  • o Serilog.Sinks.File 4.1.0 -> 5.0.0

  • o Serilog.Sinks.Console 3.1.1 -> 4.1.0

test 目录测试项目程序集版本升级类表:

  • o Microsoft.NET.Test.Sdk 16.9.1 -> 17.2.0

  • o Microsoft.Extensions.Hosting 5.0.* -> 7.0.0

  • o Microsoft.Extensions.Http.Polly 5.0.* -> 7.0.0

  • o NSubstitute 4.2.2 -> 4.3.0

  • o Shouldly 4.0.3 无需升级

  • o xunit 2.4.1 无需升级

  • o
    xunit.extensibility.execution
    2.4.1 无需升级

  • o 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

需要在数据库中新增四张表:

  • o AbpFeatureGroups 功能组表

  • o AbpFeatures 功能表

  • o AbpPermissionGroups 权限组表

  • o 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"
}
}

第六步:功能测试

分别启动 IdentityServerHttpApi.Host 以及 Web 项目,测试应用中的功能是否都正常。

6.0.1 版本中存在的问题,在当前版本中已经修复:访问CMS菜单下除评论外的其他6个页面已经不会抛出异常。

  • o 博客:
    https://localhost:44397/Cms/Blogs

  • o 博客帖子:
    https://localhost:44397/Cms/BlogPosts

  • o 菜单:
    https://localhost:44397/Cms/Menus/Items

  • o 页面:
    https://localhost:44397/Cms/Pages

  • o 标签:
    https://localhost:44397/Cms/Tags

查看源码,已经在 /Themes/LeptonXLite/Layouts/Application.cshtml页面中修复了该Bug,设置 content_toolbar Section 为非必要渲染。

修复方式:

@await RenderSectionAsync("content_toolbar", false)

升级成功!目前的感受是,版本的稳定性进一步增强了。


本文已收录到《ABP Framework 极速开发》

相关推荐

css布局方案汇总(28个实例图文并茂)

简介布局在我们前端日常开发来说是非常重要的,一个好的布局能简化代码的同时还能提高网页的性能。常见的布局方法有浮动(float)布局、绝对定位(position)布局、表格布局(table)、弹性(fl...

十款免费的CSS框架加速Web开发

Pure这是Yahoo最新推出的一款CSS框架,它只有HTML和CSS,没有使用任何JavaScript语言。总大小只有4.4kb,但功能却非常丰富,支持响应式样式和各种导航、表格、表单、按钮、网格和...

Tailwind CSS 是不是目前世上最好的CSS框架?

转载说明:原创不易,未经授权,谢绝任何形式的转载今天看了一篇国外大佬对TailwindCSS的看法,在这里分享给大家,看看大家是否赞同,以下是其相关内容的整理,由于翻译水平有限,欢迎大家讨论和指...

下一代 CSS 框架:Mojo CSS,为何如此受欢迎?

TailwindCSS推出即受到广大开发者的欢迎,当前Githubstar数已达77.8k。它是一个功能类优先(utility-first)的CSS框架,它提供了一系列功能类,让开发者...

常见的几种摄影构图方式

摄影构图,是一种在摄影画面中表现结构美、形式美的方式。构图能让摄影主体更加突出,画面更加有序。所以说,构图在摄影中是非常重要的一个环节。无论是前期构图还是后期构图,摄影者都要对构图有一个比较深的了解。...

风光摄影10大构图技巧,会用构图,照片更容易好看

风光摄影10大构图技巧,会用构图,照片更容易好看先解释一下,为什么会使用构图之后,照片更容易好看?因为,构图是根据很多好看的照片,总结出来的技巧,使用这些构图技巧,就相当于站在了巨人的肩膀上,也就是用...

掌握框式构图的摄影技巧,会让摄影爱好者的作品更有魅力!

很多摄影爱好者都知道摄影构图中有个框式构图,但大多数人对框式构图的摄影技巧,却一知半解。所以摄影爱好者们有必要更全面、深入的了解,并掌握框式构图,会对你摄影水平的提高更有帮助。【欢迎点击上方关注:金立...

这个构图很简洁,但为什么不耐看?

摄影爱好者最常犯的错就是过于复杂、主体不明确,但当遇到简单的场景往往又会出现单调、不耐看的状况。为什么会这样?说白了还是观察力不够。下面是本周的摄影入围习作,我们一起来看看这些照片中主体、陪体以及背景...

初学者需要记牢的八种常用构图法

作者:冯海军摄影中,构图很关键,决定照片是否成功,所以在构图上要加以重视和推敲,虽然说构图无定法,但是也有很多的规律可循,以下列举几种常用构图,会对初学者有很大的帮助。多彩刘卫洲摄苏州姑苏俱乐部(...

构图这件事不难!掌握14种构图模式就稳了

如果说视觉元素是视觉信息的载体,那么构图就是视觉元素的载体。没有适当形式的构图对视觉元素有机、有序地承载,平面设计将无法传达预定的设计意图和视觉信息。因此,对于平面设计而言,构图是平面设计不可或缺的重...

框架构图如何使用?

1分钟教你用手机拍大片。今天我们利用框架构图,在不同的运镜方法下拍摄。·首先将手机贴近地面,拍摄人物走过的画面。·然后利用3D效果的背景衬托,将手机贴近地面,以低角度仰拍人物。·最后我们用高清画质来呈...

面构图的5种超实用的构图形式 前景构图,框架构图,填充构图

面构图的5种超实用的构图形式。为什么有的人拍摄的照片好看又舒适?仔细观察会发现他们善用构图。大家好,今天带大家了解摄影中5种超实用的面构图形式。·一、前景构图。前景是构图中的神奇要素,可以提升照片的表...

一看就懂!跟着马格南的大师学构图

马格南图片社是迄今为止全球最重要的摄影图片社,其网站包涵了太多经典的名字和照片。细细品味这些经典图片,能够学到很多有用的构图手法。跟着大师走,总不会错吧?前后景的运用这似乎是非常常见的一种手法,仔细看...

这才是框架构图,有想法!能给你启发么?

框架构图大家并不陌生,但并不是有一个框就行了。框架构图用得不好,就很死板生硬,给人感觉很假。如果你理解透了,拍出的作品不会单调。今天就给大家分享一下框架构图,你看看有哪些妙用?1.广角与长焦的应用长焦...

7B小模型写好学术论文,新框架告别AI引用幻觉

ScholarCopilot团队投稿量子位|公众号QbitAI学术写作通常需要花费大量精力查询文献引用,而以ChatGPT、GPT-4等为代表的通用大语言模型(LLM)虽然能够生成流畅文本,但...

取消回复欢迎 发表评论: