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 極速開發》