前言
有個系統是使用 ABP Framework v4.4.2 (.NET 5)開發的,
所以要將它升級到 .NET 6 。
但因為 ABP v6 有一個大的調整,就是將原本使用的 IdentityServer 改用 OpenIddict 。
所以這次的升級,就從 v4.4.2 升級到 v5.3.5
實作
1.升級 ABP 版本
1 | abp update --v 5.3.5 |

2.安裝 libs
因為我使用的是 Razor Page ,所以參考ABP MVC / Razor Pages UI v4.x to v5.0 Migration Guide 安裝 libs
1 | abp install-libs |

3.將專案中.NET 版本從 net5.0 改成 net6.0
使用 Visual Studio 開啟方案,會有一堆錯誤,
主要是說專案不能使用 .net5.0,如下,

所以需要將方案中的 .net5.0 改成 .net6.0

找到後,就將它們改成 .net6.0
4.修改 IdentityServer 原本使用 GetByNameAsync 改成 FindByNameAsync

1 | //var apiScope = await _apiScopeRepository.GetByNameAsync(name); |
5.加入未引用的 namespace
像 IProfileAppService 就要加入 using Volo.Abp.Account;
像 cshtml 中的 check-box-hidden-input-render-mode="None"
要加上 CheckBoxHiddenInputRenderMode.
,變成 check-box-hidden-input-render-mode="CheckBoxHiddenInputRenderMode.None"
6.調整專案中其他套件使用的版本
例如 Microsoft.Extensions.FileProviders.Embedded
及 Microsoft.EntityFrameworkCore.Tools
從 5.0.*
改成 6.0.*
7.建立 DB Migration
在 套件管理器主控台 ,預設專案選擇 EntityFrameworkCore
輸入 Add-Migration "Upgraded_To_Abp_5"
來建立 Database Migration 內容
註: 請確定EntityFrameworkCore專案參考的 Microsoft.EntityFrameworkCore.Tools
版本從 從 5.0.*
改成 6.0.*
8.更新資料庫
請先將原有的 DB 備份,再到 套件管理器主控台 執行 Update-Database
參考資源
ABP Framework v4.x to v5.0 Migration Guide
ABP version 4.2 Migration Guide