diff --git a/build-all.ps1 b/build-all.ps1
index f4ff6ae116..023cbdeb4a 100644
--- a/build-all.ps1
+++ b/build-all.ps1
@@ -19,7 +19,7 @@ $solutionPaths = (
"modules/audit-logging",
"modules/background-jobs",
"modules/client-simulation",
- "templates/mvc-module",
+ "templates/module/aspnet-core",
"templates/app/aspnet-core",
"samples/MicroserviceDemo",
"abp_io/AbpIoLocalization"
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
index ceb79b2a53..53f8c566cd 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
@@ -19,6 +19,8 @@ namespace Volo.Abp.Cli.ProjectBuilding
{
case AppTemplate.TemplateName:
return new AppTemplate();
+ case AppProTemplate.TemplateName:
+ return new AppProTemplate();
case ModuleTemplate.TemplateName:
return new ModuleTemplate();
default:
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs
new file mode 100644
index 0000000000..1b05b887c5
--- /dev/null
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs
@@ -0,0 +1,16 @@
+namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
+{
+ public class AppProTemplate : AppTemplateBase
+ {
+ ///
+ /// "app-pro".
+ ///
+ public const string TemplateName = "app-pro";
+
+ public AppProTemplate()
+ : base(TemplateName)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs
index 8dbedb61f4..030a0a8752 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs
@@ -1,123 +1,16 @@
-using System.Collections.Generic;
-using Volo.Abp.Cli.ProjectBuilding.Building;
-using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
-
-namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
+namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
{
- public class AppTemplate : TemplateInfo
+ public class AppTemplate : AppTemplateBase
{
///
/// "app".
///
public const string TemplateName = "app";
- public AppTemplate()
- : base(TemplateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc)
- {
- DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application";
- }
-
- public override IEnumerable GetCustomSteps(ProjectBuildContext context)
- {
- var steps = new List();
-
- SwitchDatabaseProvider(context, steps);
- DeleteUnrelatedProjects(context, steps);
- RandomizeSslPorts(context, steps);
- CleanupFolderHierarchy(context, steps);
-
- return steps;
- }
-
- private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps)
+ public AppTemplate()
+ : base(TemplateName)
{
- if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
- {
- steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep());
- }
-
- if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore)
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests"));
- }
-
- if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb)
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests"));
- }
- }
- private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps)
- {
- if (context.BuildArgs.UiFramework == UiFramework.Mvc)
- {
- if (context.BuildArgs.ExtraProperties.ContainsKey("tiered"))
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
- steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web"));
- }
- else
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
- steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303"));
- }
-
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
- }
-
- if (context.BuildArgs.UiFramework != UiFramework.Mvc)
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
-
- if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server"))
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
- steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep());
- }
- else
- {
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
- steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
- steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host"));
- steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305"));
- }
- }
-
- if (context.BuildArgs.UiFramework != UiFramework.Angular)
- {
- steps.Add(new RemoveFolderStep("/angular"));
- }
- }
-
- private static void RandomizeSslPorts(ProjectBuildContext context, List steps)
- {
- steps.Add(new TemplateRandomSslPortStep(
- new List
- {
- "https://localhost:44300",
- "https://localhost:44301",
- "https://localhost:44302",
- "https://localhost:44303",
- "https://localhost:44305"
- }
- )
- );
- }
-
- private void CleanupFolderHierarchy(ProjectBuildContext context, List steps)
- {
- if (context.BuildArgs.UiFramework == UiFramework.Mvc)
- {
- steps.Add(new MoveFolderStep("/aspnet-core/", "/"));
- }
}
}
}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
new file mode 100644
index 0000000000..559ddbf2b6
--- /dev/null
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
@@ -0,0 +1,124 @@
+using System.Collections.Generic;
+using Volo.Abp.Cli.ProjectBuilding.Building;
+using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
+
+namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
+{
+ public abstract class AppTemplateBase : TemplateInfo
+ {
+ protected AppTemplateBase(string templateName)
+ : base(templateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc)
+ {
+ DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application";
+ }
+
+ public static bool IsAppTemplate(string templateName)
+ {
+ return templateName == AppTemplate.TemplateName ||
+ templateName == AppProTemplate.TemplateName;
+ }
+
+ public override IEnumerable GetCustomSteps(ProjectBuildContext context)
+ {
+ var steps = new List();
+
+ SwitchDatabaseProvider(context, steps);
+ DeleteUnrelatedProjects(context, steps);
+ RandomizeSslPorts(context, steps);
+ CleanupFolderHierarchy(context, steps);
+
+ return steps;
+ }
+
+ private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps)
+ {
+ if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
+ {
+ steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep());
+ }
+
+ if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore)
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests"));
+ }
+
+ if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb)
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests"));
+ }
+ }
+
+ private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps)
+ {
+ if (context.BuildArgs.UiFramework == UiFramework.Mvc)
+ {
+ if (context.BuildArgs.ExtraProperties.ContainsKey("tiered"))
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
+ steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web"));
+ }
+ else
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
+ steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303"));
+ }
+
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
+ }
+
+ if (context.BuildArgs.UiFramework != UiFramework.Mvc)
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
+
+ if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server"))
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
+ steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep());
+ }
+ else
+ {
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
+ steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
+ steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host"));
+ steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305"));
+ }
+ }
+
+ if (context.BuildArgs.UiFramework != UiFramework.Angular)
+ {
+ steps.Add(new RemoveFolderStep("/angular"));
+ }
+ }
+
+ private static void RandomizeSslPorts(ProjectBuildContext context, List steps)
+ {
+ steps.Add(new TemplateRandomSslPortStep(
+ new List
+ {
+ "https://localhost:44300",
+ "https://localhost:44301",
+ "https://localhost:44302",
+ "https://localhost:44303",
+ "https://localhost:44305"
+ }
+ )
+ );
+ }
+
+ private void CleanupFolderHierarchy(ProjectBuildContext context, List steps)
+ {
+ if (context.BuildArgs.UiFramework == UiFramework.Mvc)
+ {
+ steps.Add(new MoveFolderStep("/aspnet-core/", "/"));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs
index facbeef476..8b30ca2519 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs
@@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates
)
.ToList();
- if (context.Template.Name == AppTemplate.TemplateName)
+ if (AppTemplateBase.IsAppTemplate(context.Template.Name))
{
// no tiered
if (launchSettings.Count == 1 &&