diff --git a/modules/openiddict/Volo.Abp.OpenIddict.abpmdl.json b/modules/openiddict/Volo.Abp.OpenIddict.abpmdl.json
new file mode 100644
index 0000000000..7cb30216ab
--- /dev/null
+++ b/modules/openiddict/Volo.Abp.OpenIddict.abpmdl.json
@@ -0,0 +1,71 @@
+{
+ "folders": {
+ "items": {
+ "src": {},
+ "test": {},
+ "app": {}
+ }
+ },
+ "packages": {
+ "Volo.Abp.OpenIddict.Domain.Shared": {
+ "path": "src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.OpenIddict.Domain": {
+ "path": "src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.OpenIddict.EntityFrameworkCore": {
+ "path": "src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.OpenIddict.MongoDB": {
+ "path": "src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.OpenIddict.TestBase": {
+ "path": "test/Volo.Abp.OpenIddict.TestBase/Volo.Abp.OpenIddict.TestBase.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.OpenIddict.EntityFrameworkCore.Tests": {
+ "path": "test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.OpenIddict.MongoDB.Tests": {
+ "path": "test/Volo.Abp.OpenIddict.MongoDB.Tests/Volo.Abp.OpenIddict.MongoDB.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.OpenIddict.Domain.Tests": {
+ "path": "test/Volo.Abp.OpenIddict.Domain.Tests/Volo.Abp.OpenIddict.Domain.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "OpenIddict.Demo.Server": {
+ "path": "app/OpenIddict.Demo.Server/OpenIddict.Demo.Server.abppkg.json",
+ "folder": "app"
+ },
+ "OpenIddict.Demo.Client.Mvc": {
+ "path": "app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.json",
+ "folder": "app"
+ },
+ "Volo.Abp.OpenIddict.AspNetCore": {
+ "path": "src/Volo.Abp.OpenIddict.AspNetCore/Volo.Abp.OpenIddict.AspNetCore.abppkg.json",
+ "folder": "src"
+ },
+ "OpenIddict.Demo.Client.Console": {
+ "path": "app/OpenIddict.Demo.Client.Console/OpenIddict.Demo.Client.Console.abppkg.json",
+ "folder": "app"
+ },
+ "OpenIddict.Demo.API": {
+ "path": "app/OpenIddict.Demo.API/OpenIddict.Demo.API.abppkg.json",
+ "folder": "app"
+ },
+ "OpenIddict.Demo.Client.BlazorWASM": {
+ "path": "app/OpenIddict.Demo.Client.BlazorWASM/OpenIddict.Demo.Client.BlazorWASM.abppkg.json",
+ "folder": "app"
+ },
+ "Volo.Abp.PermissionManagement.Domain.OpenIddict": {
+ "path": "src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.abppkg.json",
+ "folder": "src"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/openiddict/Volo.Abp.OpenIddict.abpsln.json b/modules/openiddict/Volo.Abp.OpenIddict.abpsln.json
new file mode 100644
index 0000000000..3e59583a9a
--- /dev/null
+++ b/modules/openiddict/Volo.Abp.OpenIddict.abpsln.json
@@ -0,0 +1,8 @@
+{
+ "template": "empty",
+ "modules": {
+ "Volo.Abp.OpenIddict": {
+ "path": "Volo.Abp.OpenIddict.abpmdl.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/openiddict/Volo.Abp.OpenIddict.sln b/modules/openiddict/Volo.Abp.OpenIddict.sln
index c95dc5f251..8161e82a2a 100644
--- a/modules/openiddict/Volo.Abp.OpenIddict.sln
+++ b/modules/openiddict/Volo.Abp.OpenIddict.sln
@@ -39,6 +39,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenIddict.Demo.Client.Blaz
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.OpenIddict", "src\Volo.Abp.PermissionManagement.Domain.OpenIddict\Volo.Abp.PermissionManagement.Domain.OpenIddict.csproj", "{674D0A62-4F7B-436C-83A9-AA8FE03F3A11}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.OpenIddict.Installer", "src\Volo.Abp.OpenIddict.Installer\Volo.Abp.OpenIddict.Installer.csproj", "{B748241A-E782-493D-8905-0C27033AB519}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -105,6 +107,10 @@ Global
{674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Debug|Any CPU.Build.0 = Debug|Any CPU
{674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Release|Any CPU.ActiveCfg = Release|Any CPU
{674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B748241A-E782-493D-8905-0C27033AB519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B748241A-E782-493D-8905-0C27033AB519}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B748241A-E782-493D-8905-0C27033AB519}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B748241A-E782-493D-8905-0C27033AB519}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -125,6 +131,7 @@ Global
{70FD6E90-BBE8-4DA1-AE07-55064803225B} = {2B5CD179-FF7B-428F-98F6-2ADBB9538D18}
{F3853F2B-72D4-496C-B59C-87E2759AD79B} = {2B5CD179-FF7B-428F-98F6-2ADBB9538D18}
{674D0A62-4F7B-436C-83A9-AA8FE03F3A11} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {B748241A-E782-493D-8905-0C27033AB519} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C09128AF-C73F-ED7D-33F5-69BF7D934D50}
diff --git a/modules/openiddict/app/OpenIddict.Demo.API/OpenIddict.Demo.API.abppkg.json b/modules/openiddict/app/OpenIddict.Demo.API/OpenIddict.Demo.API.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.API/OpenIddict.Demo.API.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/OpenIddict.Demo.Client.BlazorWASM.abppkg.json b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/OpenIddict.Demo.Client.BlazorWASM.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/OpenIddict.Demo.Client.BlazorWASM.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.Console/OpenIddict.Demo.Client.Console.abppkg.json b/modules/openiddict/app/OpenIddict.Demo.Client.Console/OpenIddict.Demo.Client.Console.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.Client.Console/OpenIddict.Demo.Client.Console.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.analyze.json b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.analyze.json
new file mode 100644
index 0000000000..81b2b19298
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.analyze.json
@@ -0,0 +1,5 @@
+{
+ "name": "OpenIddict.Demo.Client.Mvc",
+ "hash": "2132c41341e3f1486a7036fbdd82d4f9",
+ "contents": []
+}
\ No newline at end of file
diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.json b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.json
new file mode 100644
index 0000000000..48875c29cf
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/OpenIddict.Demo.Client.Mvc.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "host.mvc"
+}
\ No newline at end of file
diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddict.Demo.Server.abppkg.json b/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddict.Demo.Server.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/OpenIddict.Demo.Server.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo.Abp.OpenIddict.AspNetCore.abppkg.json b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo.Abp.OpenIddict.AspNetCore.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo.Abp.OpenIddict.AspNetCore.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.analyze.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.analyze.json
new file mode 100644
index 0000000000..deea8cbf36
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.OpenIddict.Domain.Shared",
+ "hash": "bc60e65998f3b40d6651cf0a0a08a84c",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.OpenIddict",
+ "contentType": "abpModule",
+ "name": "AbpOpenIddictDomainSharedModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.json
new file mode 100644
index 0000000000..8b3de05f76
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo.Abp.OpenIddict.Domain.Shared.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain-shared"
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.analyze.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.analyze.json
new file mode 100644
index 0000000000..7b671211bd
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.analyze.json
@@ -0,0 +1,107 @@
+{
+ "name": "Volo.Abp.OpenIddict.Domain",
+ "hash": "8822f98b8a1deca68b33f69126bbc669",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.OpenIddict",
+ "contentType": "abpModule",
+ "name": "AbpOpenIddictDomainModule"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Tokens",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "OpenIddictToken"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Scopes",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "OpenIddictScope"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Authorizations",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "OpenIddictAuthorization"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Applications",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "OpenIddictApplication"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Tokens",
+ "summary": null,
+ "entityAnalyzeModel": {
+ "namespace": "Volo.Abp.OpenIddict.Tokens",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "OpenIddictToken"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IOpenIddictTokenRepository"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Scopes",
+ "summary": null,
+ "entityAnalyzeModel": {
+ "namespace": "Volo.Abp.OpenIddict.Scopes",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "OpenIddictScope"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IOpenIddictScopeRepository"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Authorizations",
+ "summary": null,
+ "entityAnalyzeModel": {
+ "namespace": "Volo.Abp.OpenIddict.Authorizations",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "OpenIddictAuthorization"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IOpenIddictAuthorizationRepository"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.Applications",
+ "summary": null,
+ "entityAnalyzeModel": {
+ "namespace": "Volo.Abp.OpenIddict.Applications",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "OpenIddictApplication"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IOpenIddictApplicationRepository"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.json b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.json
new file mode 100644
index 0000000000..1d574efe45
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo.Abp.OpenIddict.Domain.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain"
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.analyze.json b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.analyze.json
new file mode 100644
index 0000000000..a769a2edd2
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.analyze.json
@@ -0,0 +1,39 @@
+{
+ "name": "Volo.Abp.OpenIddict.EntityFrameworkCore",
+ "hash": "437e716bcba4d2364e711dac86cda9f6",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.OpenIddict.EntityFrameworkCore",
+ "contentType": "abpModule",
+ "name": "AbpOpenIddictEntityFrameworkCoreModule"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.EntityFrameworkCore",
+ "connectionStringName": "AbpOpenIddict",
+ "databaseTables": [
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Applications.OpenIddictApplication",
+ "contentType": "databaseTable",
+ "name": "OpenIddictApplications"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization",
+ "contentType": "databaseTable",
+ "name": "OpenIddictAuthorizations"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Scopes.OpenIddictScope",
+ "contentType": "databaseTable",
+ "name": "OpenIddictScopes"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Tokens.OpenIddictToken",
+ "contentType": "databaseTable",
+ "name": "OpenIddictTokens"
+ }
+ ],
+ "contentType": "efCoreDbContext",
+ "name": "OpenIddictDbContext"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.json b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.json
new file mode 100644
index 0000000000..e1c64f0175
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo.Abp.OpenIddict.EntityFrameworkCore.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.ef"
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xml b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xsd b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo.Abp.OpenIddict.Installer.csproj b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo.Abp.OpenIddict.Installer.csproj
new file mode 100644
index 0000000000..9700ba998a
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo.Abp.OpenIddict.Installer.csproj
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+ net6.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/AbpOpenIddictInstallerModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/AbpOpenIddictInstallerModule.cs
new file mode 100644
index 0000000000..fd24b25610
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/AbpOpenIddictInstallerModule.cs
@@ -0,0 +1,20 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.OpenIddict;
+
+[DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+)]
+public class AbpOpenIddictInstallerModule : AbpModule
+{
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+}
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/OpenIddictInstallerPipelineBuilder.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/OpenIddictInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..67668bbae1
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Installer/Volo/Abp/OpenIddict/OpenIddictInstallerPipelineBuilder.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.OpenIddict;
+
+[Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+[ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+public class OpenIddictInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+{
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ return GetBasePipeline(context);
+ }
+}
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.analyze.json b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.analyze.json
new file mode 100644
index 0000000000..f88d27215e
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.analyze.json
@@ -0,0 +1,39 @@
+{
+ "name": "Volo.Abp.OpenIddict.MongoDB",
+ "hash": "9306b0570c535c0a4124afc3181e8313",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.OpenIddict.MongoDB",
+ "contentType": "abpModule",
+ "name": "AbpOpenIddictMongoDbModule"
+ },
+ {
+ "namespace": "Volo.Abp.OpenIddict.MongoDB",
+ "connectionStringName": "AbpOpenIddict",
+ "databaseCollections": [
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization",
+ "contentType": "databaseCollection",
+ "name": "OpenIddictAuthorizations"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Applications.OpenIddictApplication",
+ "contentType": "databaseCollection",
+ "name": "OpenIddictApplications"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Tokens.OpenIddictToken",
+ "contentType": "databaseCollection",
+ "name": "OpenIddictTokens"
+ },
+ {
+ "entityFullName": "Volo.Abp.OpenIddict.Scopes.OpenIddictScope",
+ "contentType": "databaseCollection",
+ "name": "OpenIddictScopes"
+ }
+ ],
+ "contentType": "mongoDbContext",
+ "name": "OpenIddictMongoDbContext"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.json b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.json
new file mode 100644
index 0000000000..8b23fd1e69
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo.Abp.OpenIddict.MongoDB.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mongodb"
+}
\ No newline at end of file
diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.abppkg.json b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo.Abp.OpenIddict.Domain.Tests.abppkg.json b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo.Abp.OpenIddict.Domain.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo.Abp.OpenIddict.Domain.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests.abppkg.json b/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/openiddict/test/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests/Volo.Abp.OpenIddict.EntityFrameworkCore.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.MongoDB.Tests/Volo.Abp.OpenIddict.MongoDB.Tests.abppkg.json b/modules/openiddict/test/Volo.Abp.OpenIddict.MongoDB.Tests/Volo.Abp.OpenIddict.MongoDB.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/openiddict/test/Volo.Abp.OpenIddict.MongoDB.Tests/Volo.Abp.OpenIddict.MongoDB.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo.Abp.OpenIddict.TestBase.abppkg.json b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo.Abp.OpenIddict.TestBase.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/openiddict/test/Volo.Abp.OpenIddict.TestBase/Volo.Abp.OpenIddict.TestBase.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file