ABP Commercial Version 8.0 Migration Guide
This document is a guide for upgrading ABP Commercial v7.x solutions to ABP Commercial v8.0. Please read them all carefully since v8.0 has some changes that you should take care of.
ABP Commercial upgraded to .NET 8.0, so you need to move your solutions to .NET 8.0 if you want to use the ABP 8.0. You can check the Migrate from ASP.NET Core 7.0 to 8.0 documentation. Also, see the ABP Framework migration guide for the changes made in the ABP Framework.
Upgraded to OpenIddict to 5.0.0
The 5.0 release of OpenIddict is a major release that introduces breaking changes.
See OpenIddict 4.x to 5.x Migration Guide for more information.
Replaced IdentityUserLookupAppService
with the IIdentityUserIntegrationService
Integration Services are built for module-to-module (or microservice-to-microservice) communication rather than consumed from a UI or a client application as Application Services are intended to do.
In that regard, we are discarding the IIdentityUserLookupAppService
in the Identity Module and moving its functionality to the IIdentityUserIntegrationService
. Therefore, if you have used that application service directly, use the integration service (IIdentityUserIntegrationService
) instead. IIdentityUserLookupAppService
will be removed in thes next versions, so you may need to create a similar service in your application.
Notice that integration services have no authorization and are not exposed as HTTP API by default.
Also, if you have overridden the IdentityUserLookupAppService
and IdentityUserIntegrationService
classes in your application, you should update these classes' constructors as follows:
IdentityUserLookupAppService.cs
public IdentityUserLookupAppService(IIdentityUserIntegrationService identityUserIntegrationService)
{
IdentityUserIntegrationService = identityUserIntegrationService;
}
IdentityUserIntegrationService.cs
public IdentityUserIntegrationService(
IIdentityUserRepository userRepository,
+ IdentityUserRepositoryExternalUserLookupServiceProvider userLookupServiceProvider)
{
UserRepository = userRepository;
+ UserLookupServiceProvider = userLookupServiceProvider;
}
CMS Kit Pro: Moved Public Components Under the Common Projects
We have revised the project structure of the CMS Kit Pro module and decided to create common projects to share common components between the public and backoffice applications. Therefore, we have moved some components under these common projects and this development led to modification in the namespaces of the CMS Kit Pro components and their associated DTOs.
As a result, the following namespaces and sub-namespaces were changed as in the following and if you have used these components, you should make the related namespace changes in your application:
Volo.CmsKit.Pro.Public.Web.Pages.Public.Shared.Components
-> Volo.CmsKit.Pro.Web.Pages.Public.Shared.Components
The client-proxy.js file was also updated as follows:
client-proxies/cms-kit-pro-proxy.js
-> client-proxies/cms-kit-pro-common-proxy.js
CMS Kit Pro: Changed Route Convention for Poll Feature
We have made some improvements on the CMS Kit Pro's Poll Feature such as preventing adding more than one poll with the same date range to a widget, or not rendering a widget without any active poll. During the development, we revised the Poll Feature and noticed that the route convention was not following the REST API Route URI Convention and this led us to update the routes.
You can see the following changes and if you are making a request to the following routes, you can change them as stated below:
/api/cms-kit-public/poll/findbywidget -> /api/cms-kit-public/poll/by-available-widget-name
/api/cms-kit-public/poll/findbycode -> /api/cms-kit-public/poll/by-code
/api/cms-kit-public/poll/showresult -> /api/cms-kit-public/poll/result/{id}
Switch Ocelot to YARP for the API Gateway (Microservice Solution Template)
Until this version, ABP Commercial was using the Ocelot for the API Gateway, in the Microservice Startup Template. Since the Ocelot library is not actively maintained, we have searched for an alternative and decided to switch from Ocelot to YARP for the API Gateway.
You don't need to make any changes in your solution regarding this migration. However, if you want to migrate your existing microservice application's API Gateway from Ocelot to YARP, then you can read the Migrating to YARP documentation.
Added the AccountAdminApplicationModule & AccountAdminHttpApiModule to Auth Server Project
In this version, the Volo.Abp.Account.Pro.Admin.HttpApi
and Volo.Abp.Account.Pro.Admin.HttpApi
packages have been added to the AuthServer
project in the microservice startup template.
/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj:
<ItemGroup>
+ <PackageReference Include="Volo.Abp.Account.Pro.Admin.HttpApi" Version="8.0.*"/>
+ <PackageReference Include="Volo.Abp.Account.Pro.Admin.Application" Version="8.0.*"/>
</ItemGroup>
/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs:
[DependsOn(
//other module definitions...
+ typeof(AbpAccountAdminApplicationModule),
+ typeof(AbpAccountAdminHttpApiModule),
)]
public class MyProjectNameAuthServerModule : AbpModule
{
}
Upgraded NuGet Dependencies
You can see the following list of NuGet libraries that have been upgraded with .NET 8.0 upgrade, if you are using one of these packages explicitly, you may consider upgrading them in your solution:
Package | Old Version | New Version |
---|---|---|
AspNetCore.HealthChecks.UI | 7.0.0-rc2.6 | 8.0.0 |
AspNetCore.HealthChecks.UI.Client | 7.0.0-rc2.6 | 8.0.0 |
AspNetCore.HealthChecks.UI.InMemory.Storage | 7.0.0-rc2.6 | 8.0.0 |
Blazorise.Bootstrap5 | 1.3.1 | 1.3.2 |
Blazorise.Charts | 1.3.1 | 1.3.2 |
Blazorise.Components | 1.3.1 | 1.3.2 |
Blazorise.Icons.FontAwesome | 1.3.1 | 1.3.2 |
Blazorise.Markdown | 1.3.1 | 1.3.2 |
Blazorise.TreeView | 1.3.1 | 1.3.2 |
bunit | 1.11.7 | 1.24.10 |
CsvHelper | 15.0.9 | 30.0.1 |
EphemeralMongo.Core | 1.1.0 | 1.1.3 |
EphemeralMongo6.runtime.linux-x64 | 1.1.0 | 1.1.3 |
EphemeralMongo6.runtime.osx-x64 | 1.1.0 | 1.1.3 |
EphemeralMongo6.runtime.win-x64 | 1.1.0 | 1.1.3 |
Excubo.Blazor.TreeViews | 1.3.17 | 3.2.13 |
HtmlAgilityPack | 1.7.4 | 1.11.54 |
HtmlSanitizer | 5.0.331 | 8.0.746 |
IdentityModel | 6.0.0 | 6.2.0 |
IdentityModel.OidcClient | 5.1.0 | 5.2.1 |
Iyzipay | 2.1.39 | 2.1.55 |
Markdig | 0.20.0 | 0.33.0 |
Markdig.Signed | 0.26.0 | 0.33.0 |
Microsoft.AspNetCore.Authentication.Google | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Authentication.JwtBearer | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Authentication.MicrosoftAccount | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Authentication.OpenIdConnect | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Authentication.Twitter | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Authorization | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Components.WebAssembly | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Components.WebAssembly.Authentication | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Components.WebAssembly.DevServer | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.DataProtection.StackExchangeRedis | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.Mvc.NewtonsoftJson | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.SignalR.Client | 7.0.10 | 8.0.0 |
Microsoft.AspNetCore.WebUtilities | 2.2.0 | 8.0.0 |
Microsoft.CodeAnalysis | 4.2.0 | 4.5.0 |
Microsoft.CodeAnalysis.Common | 4.2.0 | 4.5.0 |
Microsoft.CodeAnalysis.CSharp | 4.2.0 | 4.5.0 |
Microsoft.CodeAnalysis.CSharp.Features | 4.2.0 | 4.5.0 |
Microsoft.CodeAnalysis.Features | 4.2.0 | 4.5.0 |
Microsoft.Data.Sqlite | 7.0.0 | 8.0.0 |
Microsoft.EntityFrameworkCore.Design | 7.0.10 | 8.0.0 |
Microsoft.EntityFrameworkCore.Proxies | 7.0.10 | 8.0.0 |
Microsoft.EntityFrameworkCore.Tools | 7.0.10 | 8.0.0 |
Microsoft.Extensions.Caching.StackExchangeRedis | 7.0.0 | 8.0.0 |
Microsoft.Extensions.FileProviders.Embedded | 7.0.10 | 8.0.0 |
Microsoft.Extensions.Hosting | 7.0.0 | 8.0.0 |
Microsoft.Extensions.Http | 6.0.0 | 8.0.0 |
Microsoft.Extensions.Http.Polly | 7.0.10 | 8.0.0 |
Microsoft.Extensions.Logging.Debug | 7.0.0 | 8.0.0 |
Microsoft.NET.Test.Sdk | 16.6.1 | 17.8.0 |
Microsoft.OpenApi | 1.2.3 | 1.6.10 |
Microsoft.VisualStudio.Web.CodeGeneration.Design | 7.0.0 | 8.0.0 |
MimeTypeMapOfficial | 1.0.11 | 1.0.17 |
MongoDB.Driver | 2.19.0 | 2.22.0 |
MySql.Data | 8.0.32.1 | 8.2.0 |
NEST | 7.15.0 | 7.17.5 |
Newtonsoft.Json | 12.0.3 | 13.0.3 |
NSubstitute | 4.3.0 | 5.1.0 |
NSwag.AspNetCore | 13.18.2 | 13.20.0 |
Oracle.EntityFrameworkCore | 7.21.9 | 7.21.12 |
Owl.reCAPTCHA | 0.5.0 | 7.0.0 |
PayPalCheckoutSdk | 1.0.3 | 1.0.4 |
PayPalHttp | 1.0.0 | 1.0.1 |
Polly | 7.2.3 | 8.2.0 |
Portable.BouncyCastle | 1.8.5.2 | 1.9.0 |
Serilog.AspNetCore | 4.0.0 | 8.0.0 |
Serilog.Extensions.Hosting | 3.0.0 | 8.0.0 |
Serilog.Extensions.Logging | 3.1.0 | 8.0.0 |
Serilog.Settings.Configuration | 3.4.0 | 8.0.0 |
Serilog.Sinks.Console | 4.0.1 | 5.0.0 |
Serilog.Sinks.File | 4.0.0 | 5.0.0 |
Shouldly | 3.0.2 | 4.2.1 |
Stripe.net | 39.5.0 | 43.2.0 |
Swashbuckle.AspNetCore | 6.3.1 | 6.5.0 |
System.Data.SQLite | 1.0.117 | 1.0.118 |
System.IdentityModel.Tokens.Jwt | 6.24.0 | 7.0.3 |
System.Management | 4.7.0 | 8.0.0 |
System.Text.Encodings.Web | 7.0.0 | 8.0.0 |
Twilio | 5.43.0 | 6.14.1 |
xunit | 2.4.1 | 2.6.1 |
xunit.extensibility.execution | 2.4.1 | 2.6.1 |
xunit.runner.visualstudio | 2.4.2 | 2.5.3 |