diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index a2c47af69b..e276da7b50 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -38,16 +38,11 @@ namespace Volo.Abp.Cli.Commands } var newTemplate = commandLineArgs.Options.ContainsKey(Options.NewTemplate.Long); - var template = commandLineArgs.Options.GetOrNull(Options.Template.Short, Options.Template.Long); var newProTemplate = !string.IsNullOrEmpty(template) && template == ModuleProTemplate.TemplateName; - var withSourceCode = newTemplate || newProTemplate || commandLineArgs.Options.ContainsKey(Options.SourceCode.Long); var addSourceCodeToSolutionFile = withSourceCode && commandLineArgs.Options.ContainsKey("add-to-solution-file"); - - var skipDbMigrations = newTemplate || newProTemplate || Convert.ToBoolean( - commandLineArgs.Options.GetOrNull(Options.DbMigrations.Skip) ?? "false"); - + var skipDbMigrations = newTemplate || newProTemplate || Convert.ToBoolean(commandLineArgs.Options.GetOrNull(Options.DbMigrations.Skip) ?? "false"); var solutionFile = GetSolutionFile(commandLineArgs); var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); 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 7480ede715..002fc61303 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 @@ -444,6 +444,8 @@ namespace Volo.Abp.Cli.Commands return UiFramework.Angular; case "blazor": return UiFramework.Blazor; + case "blazor-server": + return UiFramework.BlazorServer; default: return UiFramework.NotSpecified; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs index 0d33b16309..4f24f4bea2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs @@ -9,7 +9,14 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps var publicAppSettings = context.Files .FirstOrDefault(f => f.Name.Contains("MyCompanyName.MyProjectName.Web.Public") && f.Name.EndsWith("appsettings.json")); - publicAppSettings?.SetContent(publicAppSettings.Content.Replace("localhost:44303","localhost:44305")); + if (context.BuildArgs.UiFramework == UiFramework.BlazorServer) + { + publicAppSettings?.SetContent(publicAppSettings.Content.Replace("localhost:44303","localhost:44313")); + } + else + { + publicAppSettings?.SetContent(publicAppSettings.Content.Replace("localhost:44303","localhost:44305")); + } } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs new file mode 100644 index 0000000000..502bdb1d14 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RenameProjectInTyeStep : ProjectBuildPipelineStep + { + private readonly string _oldName; + private readonly string _newName; + + public RenameProjectInTyeStep(string oldName, string newName) + { + _oldName = oldName; + _newName = newName; + } + + public override void Execute(ProjectBuildContext context) + { + var tyeFile = context.Files.FirstOrDefault(f => f.Name == "/tye.yaml"); + + if (tyeFile == null) + { + return; + } + + var lines = tyeFile.GetLines(); + var oldNameLine = $"- name: {_oldName}"; + var newNameLine = $"- name: {_newName}"; + + var newLines = lines.Select(line => line.Equals(oldNameLine) ? newNameLine : line).ToList(); + + tyeFile.SetContent(string.Join(Environment.NewLine, newLines)); + } + + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs index 3e77f0844e..0442ca8d98 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs @@ -32,7 +32,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building pipeline.Steps.Add(new DatabaseManagementSystemChangeStep()); // todo: move to custom steps? } - if ((context.BuildArgs.UiFramework == UiFramework.Mvc || context.BuildArgs.UiFramework == UiFramework.Blazor) + if ((context.BuildArgs.UiFramework == UiFramework.Mvc || context.BuildArgs.UiFramework == UiFramework.Blazor || context.BuildArgs.UiFramework == UiFramework.BlazorServer) && context.BuildArgs.MobileApp == MobileApp.None && context.Template.Name != MicroserviceProTemplate.TemplateName && context.Template.Name != MicroserviceServiceProTemplate.TemplateName) { 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 index 17e33dc22d..443ab46013 100644 --- 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 @@ -6,6 +6,7 @@ None = 1, Mvc = 2, Angular = 3, - Blazor = 4 + Blazor = 4, + BlazorServer = 5 } } 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 index b247a8f424..b488dde6be 100644 --- 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 @@ -10,6 +10,7 @@ case UiFramework.Mvc: return "mvc"; case UiFramework.Angular: return "angular"; case UiFramework.Blazor: return "blazor"; + case UiFramework.BlazorServer: return "blazor-server"; case UiFramework.NotSpecified: return "NotSpecified"; default: return "NotSpecified"; } 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 index 260d996484..b0526a27d2 100644 --- 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 @@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey("separate-tenant-schema")) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.EntityFrameworkCore.SeparateDbMigrations", "MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.EntityFrameworkCore.SeparateDbMigrations", "MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); } else { @@ -87,22 +87,31 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App ConfigureWithAngularUi(context, steps); break; - case UiFramework.Blazor: ConfigureWithBlazorUi(context, steps); break; + case UiFramework.BlazorServer: + ConfigureWithBlazorServerUi(context, steps); + break; + case UiFramework.Mvc: case UiFramework.NotSpecified: ConfigureWithMvcUi(context, steps); break; } - if (context.BuildArgs.UiFramework != UiFramework.Blazor) + if (context.BuildArgs.UiFramework != UiFramework.Blazor && context.BuildArgs.UiFramework != UiFramework.BlazorServer) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor")); } + if (context.BuildArgs.UiFramework != UiFramework.BlazorServer) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered")); + } + if (context.BuildArgs.UiFramework != UiFramework.Angular) { steps.Add(new RemoveFolderStep("/angular")); @@ -147,7 +156,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.Tiered.Long) || context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) { - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Public.Host","MyCompanyName.MyProjectName.Web.Public")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Public.Host","MyCompanyName.MyProjectName.Web.Public")); steps.Add(new ChangeDbMigratorPublicPortStep()); } else if (context.BuildArgs.UiFramework != UiFramework.NotSpecified && context.BuildArgs.UiFramework != UiFramework.Mvc) @@ -181,7 +190,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { 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 TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } @@ -202,18 +211,42 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { 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 TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } + private static void ConfigureWithBlazorServerUi(ProjectBuildContext context, List steps) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor")); + 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 RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + + if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) + { + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered", "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); + } + else + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); + steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44313")); + } + } + private static void ConfigureWithMvcUi(ProjectBuildContext context, List steps) { 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")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else @@ -248,7 +281,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { 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 TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } @@ -265,6 +298,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App return; } + //todo: discuss blazor ports steps.Add(new TemplateRandomSslPortStep( new List { @@ -308,7 +342,9 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App private static void CleanupFolderHierarchy(ProjectBuildContext context, List steps) { - if ((context.BuildArgs.UiFramework == UiFramework.Mvc || context.BuildArgs.UiFramework == UiFramework.Blazor) && + if ( (context.BuildArgs.UiFramework == UiFramework.Mvc + || context.BuildArgs.UiFramework == UiFramework.Blazor + || context.BuildArgs.UiFramework == UiFramework.BlazorServer) && context.BuildArgs.MobileApp == MobileApp.None) { steps.Add(new MoveFolderStep("/aspnet-core/", "/")); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 8b7bcbbadb..76c2fe6bb5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -30,6 +30,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice private static void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) { + //TODO: move common tasks to methods switch (context.BuildArgs.UiFramework) { case UiFramework.None: @@ -41,8 +42,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); steps.Add(new RemoveFolderStep("/apps/angular")); break; @@ -56,8 +60,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); break; case UiFramework.Blazor: @@ -67,14 +74,48 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveFolderStep("/apps/angular")); steps.Add(new RemoveProjectFromTyeStep("web")); steps.Add(new RemoveProjectFromPrometheusStep("web")); + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server", + "/apps/blazor/MyCompanyName.MyProjectName.Blazor.sln", + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server", + null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); + + break; + + case UiFramework.BlazorServer: + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web",null, + "/apps/web/src/MyCompanyName.MyProjectName.Web")); + steps.Add(new RemoveFolderStep("/apps/web")); + steps.Add(new RemoveFolderStep("/apps/angular")); + steps.Add(new RemoveProjectFromTyeStep("web")); + steps.Add(new RemoveProjectFromPrometheusStep("web")); + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor", + "/apps/blazor/MyCompanyName.MyProjectName.Blazor.sln", + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor", + null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor")); + + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", + "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RenameProjectInTyeStep("blazor-server", "blazor")); + break; case UiFramework.Mvc: case UiFramework.NotSpecified: steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); steps.Add(new RemoveFolderStep("/apps/angular")); break; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs similarity index 59% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs index f307bc6626..66134310e8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs @@ -1,15 +1,14 @@ using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.Cli.ProjectBuilding.Building.Steps; -using Volo.Abp.Cli.ProjectBuilding.Files; -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +namespace Volo.Abp.Cli.ProjectBuilding.Templates { - public class AppTemplateProjectRenameStep : ProjectBuildPipelineStep + public class TemplateProjectRenameStep : ProjectBuildPipelineStep { private readonly string _oldProjectName; private readonly string _newProjectName; - public AppTemplateProjectRenameStep( + public TemplateProjectRenameStep( string oldProjectName, string newProjectName) { @@ -19,10 +18,6 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App public override void Execute(ProjectBuildContext context) { - context - .GetFile("/aspnet-core/MyCompanyName.MyProjectName.sln") - .ReplaceText(_oldProjectName, _newProjectName); - RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/BlazorProjectTypeChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/BlazorProjectTypeChecker.cs new file mode 100644 index 0000000000..b7806ce4f1 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/BlazorProjectTypeChecker.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Volo.Abp.Cli.ProjectModification +{ + public static class BlazorProjectTypeChecker + { + public static bool IsBlazorServerProject(string blazorProjectPath) + { + var blazorProjectCsprojContent = File.ReadAllText(blazorProjectPath); + + return !blazorProjectCsprojContent.Contains("Microsoft.NET.Sdk.BlazorWebAssembly"); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs index 68b6e4fb44..751db222a5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NuGetPackageTarget.cs @@ -14,6 +14,8 @@ MongoDB = 9, SignalR = 10, Blazor = 11, - IdentityServer = 12 + IdentityServer = 12, + BlazorServer = 13, + BlazorWebAssembly = 14 } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs index 0ac4bb2a51..d0925c6d0d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectFinder.cs @@ -49,6 +49,12 @@ namespace Volo.Abp.Cli.ProjectModification FindProjectEndsWith(projectFiles, assemblyNames, ".HttpApi.Host"); case NuGetPackageTarget.Blazor: return FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); + case NuGetPackageTarget.BlazorWebAssembly: + var BlazorWebAssemblyTargetProject = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); + return !BlazorProjectTypeChecker.IsBlazorServerProject(BlazorWebAssemblyTargetProject) ? BlazorWebAssemblyTargetProject : null; + case NuGetPackageTarget.BlazorServer: + var BlazorServerTargetProject = FindProjectEndsWith(projectFiles, assemblyNames, ".Blazor"); + return BlazorProjectTypeChecker.IsBlazorServerProject(BlazorServerTargetProject) ? BlazorServerTargetProject : null; default: return null; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs index 6ebcad2c08..f2b8160d53 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.Cli.ProjectModification DerivedClassFinder moduleClassFinder, ModuleClassDependcyAdder moduleClassDependcyAdder, IRemoteServiceExceptionHandler remoteServiceExceptionHandler, - BundleCommand bundleCommand, + BundleCommand bundleCommand, CliHttpClientFactory cliHttpClientFactory) { JsonSerializer = jsonSerializer; @@ -105,7 +105,7 @@ namespace Volo.Abp.Cli.ProjectModification ModuleClassDependcyAdder.Add(moduleFiles.First(), package.ModuleClass); } - if (package.Target == NuGetPackageTarget.Blazor) + if (useDotnetCliToInstall && (package.Target == NuGetPackageTarget.Blazor || package.Target == NuGetPackageTarget.BlazorServer || package.Target == NuGetPackageTarget.BlazorWebAssembly)) { await RunBundleForBlazorAsync(projectFile); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index e5b75cb129..44d8c26a9f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -12,6 +12,7 @@ using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Commands.Services; using Volo.Abp.Cli.Http; using Volo.Abp.Cli.ProjectBuilding; +using Volo.Abp.Cli.ProjectBuilding.Files; using Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule; using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; @@ -101,8 +102,7 @@ namespace Volo.Abp.Cli.ProjectModification if (withSourceCode || newTemplate || newProTemplate) { var modulesFolderInSolution = Path.Combine(Path.GetDirectoryName(solutionFile), "modules"); - await DownloadSourceCodesToSolutionFolder(module, modulesFolderInSolution, version, newTemplate, - newProTemplate); + await DownloadSourceCodesToSolutionFolder(module, modulesFolderInSolution, version, newTemplate, newProTemplate); await RemoveUnnecessaryProjectsAsync(Path.GetDirectoryName(solutionFile), module, projectFiles); if (addSourceCodeToSolutionFile) @@ -155,9 +155,26 @@ namespace Volo.Abp.Cli.ProjectModification var moduleSolutionFile = Directory.GetFiles(moduleDirectory, "*.sln", SearchOption.TopDirectoryOnly).First(); var isProjectTiered = await IsProjectTiered(projectFiles); - if (!projectFiles.Any(p => p.EndsWith(".Blazor.csproj"))) + var blazorProject = projectFiles.FirstOrDefault(p => p.EndsWith(".Blazor.csproj")); + if (blazorProject == null) { await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.Blazor, isProjectTiered); + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorServer, isProjectTiered); + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorWebAssembly, isProjectTiered); + await RemoveProjectByPostFix(module, moduleSolutionFile, "src", ".Blazor"); + } + else + { + var isBlazorServer = BlazorProjectTypeChecker.IsBlazorServerProject(blazorProject); + + if (isBlazorServer) + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorWebAssembly, isProjectTiered); + } + else + { + await RemoveProjectByTarget(module, moduleSolutionFile, NuGetPackageTarget.BlazorServer, isProjectTiered); + } } if (!projectFiles.Any(p => p.EndsWith(".Web.csproj"))) @@ -565,9 +582,15 @@ namespace Volo.Abp.Cli.ProjectModification }, new NugetPackageInfo { - Name = $"{module.Name}.Blazor", - ModuleClass = $"{module.Name}.Blazor.{moduleProjectName}BlazorModule", - Target = NuGetPackageTarget.Blazor + Name = $"{module.Name}.Blazor.WebAssembly", + ModuleClass = $"{module.Name}.Blazor.{moduleProjectName}BlazorWebAssemblyModule", + Target = NuGetPackageTarget.BlazorWebAssembly + }, + new NugetPackageInfo + { + Name = $"{module.Name}.Blazor.Server", + ModuleClass = $"{module.Name}.Blazor.{moduleProjectName}BlazorServerModule", + Target = NuGetPackageTarget.BlazorServer }, new NugetPackageInfo {