diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json index b44c8833bd..7224dab07e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Www/Localization/Resources/en.json @@ -153,6 +153,7 @@ "Code": "Code", "Result": "Result", "SeeTheDocumentForMoreInformation": "See the {0} document for more information", - "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core" + "IndexPageHeroSection": "open sourceWeb Application
Framework
for asp.net core", + "UiFramework": "UI Framework" } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 33c86bb367..df8c7eea2c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -47,7 +47,8 @@ namespace Volo.Abp.Cli.Commands SolutionName.Parse(commandLineArgs.Target), commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long), commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long), - GetDatabaseProviderOrNull(commandLineArgs), + GetDatabaseProvider(commandLineArgs), + GetUiFramework(commandLineArgs), commandLineArgs.Options ) ); @@ -94,6 +95,7 @@ namespace Volo.Abp.Cli.Commands { StreamUtils.Copy(zipInputStream, streamWriter, buffer); } + zipEntry = zipInputStream.GetNextEntry(); } } @@ -138,7 +140,7 @@ namespace Volo.Abp.Cli.Commands return "Generates a new solution based on the ABP startup templates."; } - protected virtual DatabaseProvider GetDatabaseProviderOrNull(CommandLineArgs commandLineArgs) + protected virtual DatabaseProvider GetDatabaseProvider(CommandLineArgs commandLineArgs) { var optionValue = commandLineArgs.Options.GetOrNull(Options.DatabaseProvider.Short, Options.DatabaseProvider.Long); switch (optionValue) @@ -152,6 +154,20 @@ namespace Volo.Abp.Cli.Commands } } + private UiFramework GetUiFramework(CommandLineArgs commandLineArgs) + { + var optionValue = commandLineArgs.Options.GetOrNull(Options.UiFramework.Short, Options.UiFramework.Long); + switch (optionValue) + { + case "mvc": + return UiFramework.Mvc; + case "angular": + return UiFramework.Angular; + default: + return UiFramework.NotSpecified; + } + } + public static class Options { public static class Template @@ -177,6 +193,12 @@ namespace Volo.Abp.Cli.Commands public const string Short = "v"; public const string Long = "version"; } + + public static class UiFramework + { + public const string Short = "u"; + public const string Long = "ui"; + } } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs index 1fd53705eb..01783dfc45 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoTemplateStore.cs @@ -7,7 +7,6 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using Volo.Abp.Cli.Http; -using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.DependencyInjection; using Volo.Abp.Http; using Volo.Abp.IO; @@ -40,8 +39,6 @@ namespace Volo.Abp.Cli.ProjectBuilding public async Task GetAsync( string name, - DatabaseProvider databaseProvider, - string projectName, string version = null) { if (version == null) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs index f7ca31e168..852c63057a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProvider.cs @@ -6,18 +6,4 @@ EntityFrameworkCore = 1, MongoDb = 2 } - - public static class DatabaseProviderExtensions - { - public static string ToProviderName(this DatabaseProvider databaseProvider) - { - switch (databaseProvider) - { - case DatabaseProvider.EntityFrameworkCore: return "ef"; - case DatabaseProvider.MongoDb: return "mongodb"; - case DatabaseProvider.NotSpecified: return "NotSpecified"; - default: return "NotSpecified"; - } - } - } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs new file mode 100644 index 0000000000..61e4805d00 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseProviderExtensions.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public static class DatabaseProviderExtensions + { + public static string ToProviderName(this DatabaseProvider databaseProvider) + { + switch (databaseProvider) + { + case DatabaseProvider.EntityFrameworkCore: return "ef"; + case DatabaseProvider.MongoDb: return "mongodb"; + case DatabaseProvider.NotSpecified: return "NotSpecified"; + default: return "NotSpecified"; + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs index a6e5e2e56f..91d83b086a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipeline.cs @@ -4,18 +4,21 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building { public class ProjectBuildPipeline { + public ProjectBuildContext Context { get; } + public List Steps { get; } - public ProjectBuildPipeline() + public ProjectBuildPipeline(ProjectBuildContext context) { + Context = context; Steps = new List(); } - public void Execute(ProjectBuildContext context) + public void Execute() { foreach (var step in Steps) { - step.Execute(context); + step.Execute(Context); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs index 6ed0b7133e..5f763b15f9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ProjectBuildPipelineBuilder.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building { public static ProjectBuildPipeline Build(ProjectBuildContext context) { - var pipeline = new ProjectBuildPipeline(); + var pipeline = new ProjectBuildPipeline(context); pipeline.Steps.Add(new FileEntryListReadStep()); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs new file mode 100644 index 0000000000..a36cde6f3f --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveFolderStep.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class MoveFolderStep : ProjectBuildPipelineStep + { + private readonly string _sourceFolder; + private readonly string _targetFolder; + + public MoveFolderStep(string sourceFolder, string targetFolder) + { + _sourceFolder = sourceFolder; + _targetFolder = targetFolder; + } + + public override void Execute(ProjectBuildContext context) + { + var fileEntries = context.Files.Where(file => file.Name.StartsWith(_sourceFolder)).ToList(); + foreach (var fileEntry in fileEntries) + { + var newName = fileEntry.Name.ReplaceFirst(_sourceFolder, _targetFolder); + + if (newName.IsIn("", "/")) + { + context.Files.Remove(fileEntry); + continue; + } + + fileEntry.SetName(newName); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs new file mode 100644 index 0000000000..ddf7010dd7 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveFolderStep.cs @@ -0,0 +1,28 @@ +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveFolderStep : ProjectBuildPipelineStep + { + private readonly string _folderPath; + + public RemoveFolderStep(string folderPath) + { + _folderPath = folderPath; + } + + public override void Execute(ProjectBuildContext context) + { + //Remove the folder content + var folderPathWithSlash = _folderPath + "/"; + context.Files.RemoveAll(file => file.Name.StartsWith(folderPathWithSlash)); + + //Remove the folder + var folder = context.Files.FirstOrDefault(file => file.Name == _folderPath); + if (folder != null) + { + context.Files.Remove(folder); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs index fe1de0d72d..497a38c4b1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs @@ -24,9 +24,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps public override void Execute(ProjectBuildContext context) { - var projectFolderWithSlash = _projectFolderPath + "/"; - context.Files.RemoveAll(file => file.Name.StartsWith(projectFolderWithSlash)); - context.Files.RemoveAll(file => file.Name == _projectFolderPath); + new RemoveFolderStep(_projectFolderPath).Execute(context); var solutionFile = context.GetFile(_solutionFilePath); solutionFile.NormalizeLineEndings(); solutionFile.SetLines(RemoveProject(solutionFile.GetLines().ToList())); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs index 3809646ecc..137674dcc6 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateInfo.cs @@ -11,15 +11,19 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building public DatabaseProvider DefaultDatabaseProvider { get; } + public UiFramework DefaultUiFramework { get; } + [CanBeNull] public string DocumentUrl { get; set; } protected TemplateInfo( [NotNull] string name, - DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified) + DatabaseProvider defaultDatabaseProvider = DatabaseProvider.NotSpecified, + UiFramework defaultUiFramework = UiFramework.NotSpecified) { Name = Check.NotNullOrWhiteSpace(name, nameof(name)); - DefaultDatabaseProvider = Check.NotNull(defaultDatabaseProvider, nameof(defaultDatabaseProvider)); + DefaultDatabaseProvider = defaultDatabaseProvider; + DefaultUiFramework = defaultUiFramework; } public virtual IEnumerable GetCustomSteps(ProjectBuildContext context) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs new file mode 100644 index 0000000000..eab34d141b --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFramework.cs @@ -0,0 +1,9 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public enum UiFramework + { + NotSpecified = 0, + Mvc = 1, + Angular = 2 + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs new file mode 100644 index 0000000000..09eb0c474c --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building +{ + public static class UiFrameworkExtensions + { + public static string ToFrameworkName(this UiFramework uiFramework) + { + switch (uiFramework) + { + case UiFramework.Mvc: return "mvc"; + case UiFramework.Angular: return "angular"; + case UiFramework.NotSpecified: return "NotSpecified"; + default: return "NotSpecified"; + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs index 064c4eb81b..728d4d4a51 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ITemplateStore.cs @@ -1,6 +1,5 @@ using System.Threading.Tasks; using JetBrains.Annotations; -using Volo.Abp.Cli.ProjectBuilding.Building; namespace Volo.Abp.Cli.ProjectBuilding { @@ -8,8 +7,6 @@ namespace Volo.Abp.Cli.ProjectBuilding { Task GetAsync( string name, - DatabaseProvider databaseProvider, - string projectName, [CanBeNull] string version = null ); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs index 42307d55cc..7f1533459d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs @@ -17,6 +17,8 @@ namespace Volo.Abp.Cli.ProjectBuilding public DatabaseProvider DatabaseProvider { get; set; } + public UiFramework UiFramework { get; set; } + [NotNull] public Dictionary ExtraProperties { get; set; } @@ -25,12 +27,14 @@ namespace Volo.Abp.Cli.ProjectBuilding [CanBeNull] string templateName = null, [CanBeNull] string version = null, DatabaseProvider databaseProvider = DatabaseProvider.NotSpecified, + UiFramework uiFramework = UiFramework.NotSpecified, Dictionary extraProperties = null) { SolutionName = Check.NotNull(solutionName, nameof(solutionName)); TemplateName = templateName; Version = version; DatabaseProvider = databaseProvider; + UiFramework = uiFramework; ExtraProperties = extraProperties ?? new Dictionary(); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs index 9251b98ecb..de485b7c06 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs @@ -41,20 +41,10 @@ namespace Volo.Abp.Cli.ProjectBuilding { var templateInfo = GetTemplateInfo(args); - args.TemplateName = templateInfo.Name; - - if (args.DatabaseProvider == DatabaseProvider.NotSpecified) - { - if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified) - { - args.DatabaseProvider = templateInfo.DefaultDatabaseProvider; - } - } + NormalizeArgs(args, templateInfo); var templateFile = await TemplateStore.GetAsync( args.TemplateName, - args.DatabaseProvider, - args.SolutionName.FullName, args.Version ); @@ -64,7 +54,7 @@ namespace Volo.Abp.Cli.ProjectBuilding args ); - ProjectBuildPipelineBuilder.Build(context).Execute(context); + ProjectBuildPipelineBuilder.Build(context).Execute(); if (!templateInfo.DocumentUrl.IsNullOrEmpty()) { @@ -94,6 +84,30 @@ namespace Volo.Abp.Cli.ProjectBuilding return new ProjectBuildResult(context.Result.ZipContent, args.SolutionName.ProjectName); } + private static void NormalizeArgs(ProjectBuildArgs args, TemplateInfo templateInfo) + { + if (args.TemplateName.IsNullOrEmpty()) + { + args.TemplateName = templateInfo.Name; + } + + if (args.DatabaseProvider == DatabaseProvider.NotSpecified) + { + if (templateInfo.DefaultDatabaseProvider != DatabaseProvider.NotSpecified) + { + args.DatabaseProvider = templateInfo.DefaultDatabaseProvider; + } + } + + if (args.UiFramework == UiFramework.NotSpecified) + { + if (templateInfo.DefaultUiFramework != UiFramework.NotSpecified) + { + args.UiFramework = templateInfo.DefaultUiFramework; + } + } + } + private TemplateInfo GetTemplateInfo(ProjectBuildArgs args) { if (args.TemplateName.IsNullOrWhiteSpace()) 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 d146e16ec7..ec7146c832 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 @@ -12,7 +12,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App public const string TemplateName = "app"; public AppTemplate() - : base(TemplateName, DatabaseProvider.EntityFrameworkCore) + : base(TemplateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc) { DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application"; } @@ -24,11 +24,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App SwitchDatabaseProvider(context, steps); DeleteUnrelatedProjects(context, steps); RandomizeSslPorts(context, steps); + CleanupFolderHierarchy(context, steps); return steps; } - private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) + private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) { if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) { @@ -51,30 +52,56 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) { - if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) + 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()); + } + } + + 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")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); } - else + + if (context.BuildArgs.UiFramework != UiFramework.Angular) { - 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()); + steps.Add(new RemoveFolderStep("/angular")); } } private static void RandomizeSslPorts(ProjectBuildContext context, List steps) { - steps.Add(new TemplateRandomSslPortStep(new List + steps.Add(new TemplateRandomSslPortStep( + new List + { + "https://localhost:44300", + "https://localhost:44301", + "https://localhost:44302", + "https://localhost:44303" + } + ) + ); + } + + private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.UiFramework == UiFramework.Mvc) { - "https://localhost:44300", - "https://localhost:44301", - "https://localhost:44302", - "https://localhost:44303" - })); + steps.Add(new MoveFolderStep("/aspnet-core/", "/")); + } } } } \ No newline at end of file