Browse Source

Fixed minor problems in the CLI.

pull/18876/head
maliming 3 years ago
parent
commit
090183ede5
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 34
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  2. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs
  3. 55
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs
  4. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs
  5. 1
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs
  6. 23
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs
  7. 44
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  8. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs
  9. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs
  10. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/_Imports.razor
  11. 2
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/_Imports.razor
  12. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/appsettings.json
  13. 6
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor.cs
  14. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor.css
  15. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs

34
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -43,7 +43,7 @@ public abstract class ProjectCreationCommandBase
public ThemePackageAdder ThemePackageAdder { get; } public ThemePackageAdder ThemePackageAdder { get; }
public AngularThemeConfigurer AngularThemeConfigurer { get; } public AngularThemeConfigurer AngularThemeConfigurer { get; }
public CliVersionService CliVersionService { get; } public CliVersionService CliVersionService { get; }
public ProjectCreationCommandBase( public ProjectCreationCommandBase(
@ -433,15 +433,14 @@ public abstract class ProjectCreationCommandBase
var isModuleTemplate = ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName); var isModuleTemplate = ModuleTemplateBase.IsModuleTemplate(projectArgs.TemplateName);
var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor; var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor;
var message = isWebassembly || isModuleTemplate
var message = isWebassembly || isModuleTemplate ? "Generating bundles for Blazor Wasm"
? "Generating bundles for Blazor Wasm"
: "Generating bundles for MAUI Blazor"; : "Generating bundles for MAUI Blazor";
var projectType = isWebassembly || isModuleTemplate var projectType = isWebassembly || isModuleTemplate
? BundlingConsts.WebAssembly ? BundlingConsts.WebAssembly
: BundlingConsts.MauiBlazor; : BundlingConsts.MauiBlazor;
Logger.LogInformation(message + "..."); Logger.LogInformation(message + "...");
await EventBus.PublishAsync(new ProjectCreationProgressEvent await EventBus.PublishAsync(new ProjectCreationProgressEvent
@ -451,7 +450,11 @@ public abstract class ProjectCreationCommandBase
var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj"; var searchPattern = isWebassembly ? "*.Blazor.csproj" : "*.MauiBlazor.csproj";
var path = projectArgs.OutputFolder; var path = projectArgs.OutputFolder;
if (isWebassembly && Directory.GetFiles(path, "*.Blazor.Client.csproj", SearchOption.AllDirectories).Any())
{
searchPattern = "*.Blazor.Client.csproj";
}
if (isModuleTemplate) if (isModuleTemplate)
{ {
path = Path.Combine(path, "host"); path = Path.Combine(path, "host");
@ -468,7 +471,7 @@ public abstract class ProjectCreationCommandBase
await _bundlingService.BundleAsync(directory, true, projectType); await _bundlingService.BundleAsync(directory, true, projectType);
} }
protected virtual bool ShouldRunBundleCommand(ProjectBuildArgs projectArgs) protected virtual bool ShouldRunBundleCommand(ProjectBuildArgs projectArgs)
{ {
if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName)) if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName))
@ -666,6 +669,8 @@ public abstract class ProjectCreationCommandBase
return UiFramework.Blazor; return UiFramework.Blazor;
case "blazor-server": case "blazor-server":
return UiFramework.BlazorServer; return UiFramework.BlazorServer;
case "blazor-webapp":
return UiFramework.BlazorWebApp;
case "maui-blazor" when template == AppProTemplate.TemplateName: case "maui-blazor" when template == AppProTemplate.TemplateName:
return UiFramework.MauiBlazor; return UiFramework.MauiBlazor;
default: default:
@ -761,6 +766,11 @@ public abstract class ProjectCreationCommandBase
ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@abp/aspnetcore.components.server.basictheme", projectArgs.Version); ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@abp/aspnetcore.components.server.basictheme", projectArgs.Version);
} }
if (projectArgs.UiFramework is UiFramework.BlazorWebApp)
{
ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@abp/aspnetcore.components.server.basictheme", projectArgs.Version);
}
if (projectArgs.UiFramework is UiFramework.Angular) if (projectArgs.UiFramework is UiFramework.Angular)
{ {
ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@abp/ng.theme.basic", projectArgs.Version); ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@abp/ng.theme.basic", projectArgs.Version);
@ -780,6 +790,12 @@ public abstract class ProjectCreationCommandBase
ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.mvc.ui.theme.lepton", projectArgs.Version); ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.mvc.ui.theme.lepton", projectArgs.Version);
} }
if (projectArgs.UiFramework is UiFramework.BlazorWebApp)
{
ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.components.server.leptontheme", projectArgs.Version);
ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.mvc.ui.theme.lepton", projectArgs.Version);
}
if (projectArgs.UiFramework is UiFramework.Angular) if (projectArgs.UiFramework is UiFramework.Angular)
{ {
ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@volo/abp.ng.theme.lepton", projectArgs.Version); ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@volo/abp.ng.theme.lepton", projectArgs.Version);

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangePublicAuthPortStep.cs

@ -9,7 +9,7 @@ public class ChangePublicAuthPortStep : ProjectBuildPipelineStep
var publicAppSettings = context.Files var publicAppSettings = context.Files
.FirstOrDefault(f => f.Name.Contains("MyCompanyName.MyProjectName.Web.Public") && f.Name.EndsWith("appsettings.json")); .FirstOrDefault(f => f.Name.Contains("MyCompanyName.MyProjectName.Web.Public") && f.Name.EndsWith("appsettings.json"));
if (context.BuildArgs.UiFramework == UiFramework.BlazorServer) if (context.BuildArgs.UiFramework == UiFramework.BlazorServer || context.BuildArgs.UiFramework == UiFramework.BlazorWebApp)
{ {
publicAppSettings?.SetContent(publicAppSettings.Content.Replace("localhost:44303", "localhost:44313")); publicAppSettings?.SetContent(publicAppSettings.Content.Replace("localhost:44303", "localhost:44313"));
} }

55
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs

@ -14,7 +14,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
private const string LeptonXLite = "LeptonXLite"; private const string LeptonXLite = "LeptonXLite";
private const string LeptonX = "LeptonX"; private const string LeptonX = "LeptonX";
private const string Lepton = "Lepton"; private const string Lepton = "Lepton";
public override void Execute(ProjectBuildContext context) public override void Execute(ProjectBuildContext context)
{ {
if (!context.BuildArgs.Theme.HasValue) if (!context.BuildArgs.Theme.HasValue)
@ -59,7 +59,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); ChangeThemeToLeptonForNoLayersBlazorServerProjects(context);
ChangeThemeToLeptonForMauiBlazorProjects(context); ChangeThemeToLeptonForMauiBlazorProjects(context);
} }
private static string GetAngularPackageName(Theme theme) private static string GetAngularPackageName(Theme theme)
{ {
return theme switch return theme switch
@ -71,7 +71,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
_ => string.Empty _ => string.Empty
}; };
} }
private static void ChangeThemeToBasicForBlazorProjects(ProjectBuildContext context, string defaultThemeName) private static void ChangeThemeToBasicForBlazorProjects(ProjectBuildContext context, string defaultThemeName)
{ {
ReplacePackageReferenceWithProjectReference( ReplacePackageReferenceWithProjectReference(
@ -80,21 +80,21 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
$"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme",
@"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs",
$"{defaultThemeName}Theme.Components", $"{defaultThemeName}Theme.Components",
"BasicTheme.Themes.Basic" "BasicTheme.Themes.Basic"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs",
defaultThemeName, defaultThemeName,
Basic Basic
); );
ReplacePackageReferenceWithProjectReference( ReplacePackageReferenceWithProjectReference(
context, context,
"/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj", "/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj",
@ -105,7 +105,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs",
defaultThemeName, defaultThemeName,
Basic Basic
); );
} }
@ -116,20 +116,20 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
{ {
return; return;
} }
ReplaceImportPackage( ReplaceImportPackage(
context, context,
"/angular/src/app/app.module.ts", "/angular/src/app/app.module.ts",
oldPackageName, oldPackageName,
newPackageName newPackageName
); );
RemoveLinesByStatement( RemoveLinesByStatement(
context, context,
"/angular/src/app/app.module.ts", "/angular/src/app/app.module.ts",
"SideMenuLayoutModule" "SideMenuLayoutModule"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/angular/src/app/app.module.ts", "/angular/src/app/app.module.ts",
@ -166,7 +166,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme", "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.csproj" @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs",
@ -180,7 +180,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs",
@ -239,7 +239,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
moduleFile.Name, moduleFile.Name,
@ -310,6 +310,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
case UiFramework.BlazorServer: case UiFramework.BlazorServer:
projects["Blazor.Server"] = "MyCompanyName.MyProjectName.Blazor.csproj"; projects["Blazor.Server"] = "MyCompanyName.MyProjectName.Blazor.csproj";
break; break;
case UiFramework.BlazorWebApp:
projects["Blazor.WebApp"] = "MyCompanyName.MyProjectName.Blazor.csproj";
break;
} }
} }
@ -385,7 +388,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
} }
file.NormalizeLineEndings(); file.NormalizeLineEndings();
var lines = file.GetLines(); var lines = file.GetLines();
var lineIndex = lines.FindIndex(line => line.Contains($"from '{oldImportPackage}'")); var lineIndex = lines.FindIndex(line => line.Contains($"from '{oldImportPackage}'"));
if (lineIndex == -1) if (lineIndex == -1)
@ -447,7 +450,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
file.SetLines(lines.Where(x => x != null)); file.SetLines(lines.Where(x => x != null));
} }
private static void AddProjectReference(FileEntry file, string reference) private static void AddProjectReference(FileEntry file, string reference)
{ {
if (!file.Name.Contains(".csproj")) if (!file.Name.Contains(".csproj"))
@ -558,7 +561,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
{ {
continue;; continue;;
} }
lines[i] = lines[i].Replace(oldKeyword, newKeyword); lines[i] = lines[i].Replace(oldKeyword, newKeyword);
} }
@ -630,21 +633,21 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
$"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}",
@"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/Pages/_Host.cshtml", $"/Pages/_Host.cshtml",
$"{defaultThemeName}Theme.Components", $"{defaultThemeName}Theme.Components",
Basic Basic
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs",
defaultThemeName, defaultThemeName,
Basic + "Theme" Basic + "Theme"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/Pages/_Host.cshtml", $"/Pages/_Host.cshtml",
@ -657,7 +660,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
private static void ChangeThemeToLeptonForBlazorServerProjects(ProjectBuildContext context) private static void ChangeThemeToLeptonForBlazorServerProjects(ProjectBuildContext context)
{ {
var projectNames = new[] { "Blazor", "Blazor.Server.Tiered" }; var projectNames = new[] { "Blazor", "Blazor.Server.Tiered" };
foreach (var projectName in projectNames) foreach (var projectName in projectNames)
{ {
ReplacePackageReferenceWithProjectReference( ReplacePackageReferenceWithProjectReference(
@ -673,14 +676,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs",
LeptonX, LeptonX,
Lepton Lepton
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/Pages/_Host.cshtml", $"/Pages/_Host.cshtml",
@ -700,7 +703,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
{ {
var blazorServerProjects = new[] { "Blazor.Server", "HttpApi", "Application" }; var blazorServerProjects = new[] { "Blazor.Server", "HttpApi", "Application" };
var projectNames = new[] { "Blazor.Server", "Blazor.Server.Mongo" }; var projectNames = new[] { "Blazor.Server", "Blazor.Server.Mongo" };
foreach (var projectName in projectNames) foreach (var projectName in projectNames)
{ {
ReplacePackageReferenceWithProjectReference( ReplacePackageReferenceWithProjectReference(
@ -722,14 +725,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
$@"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", $@"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj",
blazorServerProjects blazorServerProjects
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs",
LeptonX, LeptonX,
Lepton Lepton
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
$"/Pages/_Host.cshtml", $"/Pages/_Host.cshtml",
@ -747,7 +750,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme", "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme",
@"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.csproj" @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.csproj"
); );
ReplaceAllKeywords( ReplaceAllKeywords(
context, context,
"/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml", "/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml",

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/TemplateProjectBuildPipelineBuilder.cs

@ -50,7 +50,7 @@ public static class TemplateProjectBuildPipelineBuilder
pipeline.Steps.Add(new AppModuleDatabaseManagementSystemChangeStep()); // todo: move to custom steps? pipeline.Steps.Add(new AppModuleDatabaseManagementSystemChangeStep()); // todo: move to custom steps?
} }
if ((context.BuildArgs.UiFramework == UiFramework.Mvc || context.BuildArgs.UiFramework == UiFramework.Blazor || context.BuildArgs.UiFramework == UiFramework.BlazorServer) if ((context.BuildArgs.UiFramework == UiFramework.Mvc || context.BuildArgs.UiFramework == UiFramework.Blazor || context.BuildArgs.UiFramework == UiFramework.BlazorServer || context.BuildArgs.UiFramework == UiFramework.BlazorWebApp)
&& context.BuildArgs.MobileApp == MobileApp.None && context.Template.Name != MicroserviceProTemplate.TemplateName && context.BuildArgs.MobileApp == MobileApp.None && context.Template.Name != MicroserviceProTemplate.TemplateName
&& context.Template.Name != MicroserviceServiceProTemplate.TemplateName) && context.Template.Name != MicroserviceServiceProTemplate.TemplateName)
{ {

1
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/UiFrameworkExtensions.cs

@ -11,6 +11,7 @@ public static class UiFrameworkExtensions
case UiFramework.Angular: return "angular"; case UiFramework.Angular: return "angular";
case UiFramework.Blazor: return "blazor"; case UiFramework.Blazor: return "blazor";
case UiFramework.BlazorServer: return "blazor-server"; case UiFramework.BlazorServer: return "blazor-server";
case UiFramework.BlazorWebApp: return "blazor-webapp";
case UiFramework.NotSpecified: return "NotSpecified"; case UiFramework.NotSpecified: return "NotSpecified";
default: return "NotSpecified"; default: return "NotSpecified";
} }

23
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs

@ -22,7 +22,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context) public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context)
{ {
var steps = base.GetCustomSteps(context).ToList(); var steps = base.GetCustomSteps(context).ToList();
SwitchDatabaseProvider(context, steps); SwitchDatabaseProvider(context, steps);
DeleteUnrelatedProjects(context, steps); DeleteUnrelatedProjects(context, steps);
RemoveMigrations(context, steps); RemoveMigrations(context, steps);
@ -89,6 +89,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
break; break;
case UiFramework.Blazor: case UiFramework.Blazor:
case UiFramework.BlazorWebApp:
context.Symbols.Add("ui:blazor"); context.Symbols.Add("ui:blazor");
steps.Add(new RemoveFolderStep("/angular")); steps.Add(new RemoveFolderStep("/angular"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
@ -130,7 +131,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
throw new AbpException("Unkown UI framework: " + context.BuildArgs.UiFramework); throw new AbpException("Unkown UI framework: " + context.BuildArgs.UiFramework);
} }
} }
protected void RandomizeSslPorts(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void RandomizeSslPorts(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (context.BuildArgs.ExtraProperties.ContainsKey("no-random-port")) if (context.BuildArgs.ExtraProperties.ContainsKey("no-random-port"))
@ -157,7 +158,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
) )
); );
} }
protected void CleanupFolderHierarchy(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void CleanupFolderHierarchy(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (context.BuildArgs.UiFramework != UiFramework.Angular) if (context.BuildArgs.UiFramework != UiFramework.Angular)
@ -165,7 +166,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
steps.Add(new MoveFolderStep("/aspnet-core/", "/")); steps.Add(new MoveFolderStep("/aspnet-core/", "/"));
} }
} }
protected void RemoveMigrations(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void RemoveMigrations(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName/Migrations")); steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName/Migrations"));
@ -202,12 +203,12 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
break; break;
} }
} }
protected void RandomizeStringEncryption(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void RandomizeStringEncryption(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
steps.Add(new RandomizeStringEncryptionStep()); steps.Add(new RandomizeStringEncryptionStep());
} }
protected static void RandomizeAuthServerPassPhrase(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected static void RandomizeAuthServerPassPhrase(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
steps.Add(new RandomizeAuthServerPassPhraseStep()); steps.Add(new RandomizeAuthServerPassPhraseStep());
@ -217,7 +218,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
{ {
steps.Add(new UpdateNuGetConfigStep("/aspnet-core/NuGet.Config")); steps.Add(new UpdateNuGetConfigStep("/aspnet-core/NuGet.Config"));
} }
protected void ChangeConnectionString(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void ChangeConnectionString(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (context.BuildArgs.ConnectionString != null) if (context.BuildArgs.ConnectionString != null)
@ -230,7 +231,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
steps.Add(new ConnectionStringRenameStep()); steps.Add(new ConnectionStringRenameStep());
} }
} }
protected void ConfigureTheme(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void ConfigureTheme(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (!context.BuildArgs.Theme.HasValue) if (!context.BuildArgs.Theme.HasValue)
@ -258,7 +259,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
steps.Add(new ChangeThemeStep()); steps.Add(new ChangeThemeStep());
RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro(), uiFramework: context.BuildArgs.UiFramework); RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro(), uiFramework: context.BuildArgs.UiFramework);
} }
private static void RemoveBlazorWasmProjects(List<ProjectBuildPipelineStep> steps) private static void RemoveBlazorWasmProjects(List<ProjectBuildPipelineStep> steps)
{ {
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server",
@ -269,7 +270,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared")); projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared"));
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly")); steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly"));
} }
private void RemoveThemeLogoFolders(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) private void RemoveThemeLogoFolders(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (context.BuildArgs.Theme != Theme.Lepton && IsPro()) if (context.BuildArgs.Theme != Theme.Lepton && IsPro())
@ -282,7 +283,7 @@ public abstract class AppNoLayersTemplateBase : TemplateInfo
steps.Add(new RemoveFilesStep("/wwwroot/images/logo/leptonx/")); steps.Add(new RemoveFilesStep("/wwwroot/images/logo/leptonx/"));
} }
} }
protected void SetDbmsSymbols(ProjectBuildContext context) protected void SetDbmsSymbols(ProjectBuildContext context)
{ {
switch (context.BuildArgs.DatabaseManagementSystem) switch (context.BuildArgs.DatabaseManagementSystem)

44
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -115,6 +115,26 @@ public abstract class AppTemplateBase : TemplateInfo
protected void DeleteUnrelatedProjects(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void DeleteUnrelatedProjects(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (context.BuildArgs.UiFramework != UiFramework.Blazor)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Client"));
}
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.BlazorWebApp)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Client"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Tiered"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client"));
}
switch (context.BuildArgs.UiFramework) switch (context.BuildArgs.UiFramework)
{ {
case UiFramework.None: case UiFramework.None:
@ -147,26 +167,6 @@ public abstract class AppTemplateBase : TemplateInfo
break; break;
} }
if (context.BuildArgs.UiFramework != UiFramework.Blazor)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Client"));
}
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.BlazorWebApp)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Client"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Tiered"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client"));
}
if (context.BuildArgs.UiFramework != UiFramework.MauiBlazor) if (context.BuildArgs.UiFramework != UiFramework.MauiBlazor)
{ {
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MauiBlazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MauiBlazor"));
@ -321,7 +321,7 @@ public abstract class AppTemplateBase : TemplateInfo
steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName)); steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName));
} }
if (uiFramework == UiFramework.BlazorServer) if (uiFramework == UiFramework.BlazorServer || uiFramework == UiFramework.BlazorWebApp)
{ {
var blazorServerUiPackageName = isProTemplate ? "@volo/aspnetcore.components.server.leptonxtheme" : "@abp/aspnetcore.components.server.leptonxlitetheme"; var blazorServerUiPackageName = isProTemplate ? "@volo/aspnetcore.components.server.leptonxtheme" : "@abp/aspnetcore.components.server.leptonxlitetheme";
var blazorServerPackageJsonFilePaths = new List<string> var blazorServerPackageJsonFilePaths = new List<string>
@ -735,6 +735,7 @@ public abstract class AppTemplateBase : TemplateInfo
if ((context.BuildArgs.UiFramework == UiFramework.Mvc if ((context.BuildArgs.UiFramework == UiFramework.Mvc
|| context.BuildArgs.UiFramework == UiFramework.Blazor || context.BuildArgs.UiFramework == UiFramework.Blazor
|| context.BuildArgs.UiFramework == UiFramework.BlazorServer || context.BuildArgs.UiFramework == UiFramework.BlazorServer
|| context.BuildArgs.UiFramework == UiFramework.BlazorWebApp
|| context.BuildArgs.UiFramework == UiFramework.MauiBlazor) && || context.BuildArgs.UiFramework == UiFramework.MauiBlazor) &&
context.BuildArgs.MobileApp == MobileApp.None) context.BuildArgs.MobileApp == MobileApp.None)
{ {
@ -769,6 +770,7 @@ public abstract class AppTemplateBase : TemplateInfo
steps.Add(new MoveFileStep("/aspnet-core/etc/docker/docker-compose.Blazor.yml", "/aspnet-core/etc/docker/docker-compose.yml")); steps.Add(new MoveFileStep("/aspnet-core/etc/docker/docker-compose.Blazor.yml", "/aspnet-core/etc/docker/docker-compose.yml"));
break; break;
case UiFramework.BlazorServer: case UiFramework.BlazorServer:
case UiFramework.BlazorWebApp:
steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Angular.yml")); steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Angular.yml"));
steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Mvc.yml")); steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Mvc.yml"));
steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Blazor.yml")); steps.Add(new RemoveFileStep("/aspnet-core/etc/docker/docker-compose.Blazor.yml"));

7
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs

@ -20,7 +20,7 @@ public class MauiChangePortStep : ProjectBuildPipelineStep
} }
var ports = GetPorts(context); var ports = GetPorts(context);
appsettingsFile.NormalizeLineEndings(); appsettingsFile.NormalizeLineEndings();
var lines = appsettingsFile.GetLines(); var lines = appsettingsFile.GetLines();
@ -43,7 +43,7 @@ public class MauiChangePortStep : ProjectBuildPipelineStep
appsettingsFile.SetLines(lines); appsettingsFile.SetLines(lines);
} }
private (string AuthServerPort, string ApiHostPort) GetPorts(ProjectBuildContext context) private (string AuthServerPort, string ApiHostPort) GetPorts(ProjectBuildContext context)
{ {
var authServerPort = string.Empty; var authServerPort = string.Empty;
@ -57,6 +57,7 @@ public class MauiChangePortStep : ProjectBuildPipelineStep
authServerPort = "44305"; authServerPort = "44305";
apiHostPort = "44305"; apiHostPort = "44305";
break; break;
case UiFramework.BlazorWebApp:
case UiFramework.BlazorServer: case UiFramework.BlazorServer:
authServerPort = "44308"; authServerPort = "44308";
apiHostPort = "44308"; apiHostPort = "44308";
@ -78,4 +79,4 @@ public class MauiChangePortStep : ProjectBuildPipelineStep
return (authServerPort, apiHostPort); return (authServerPort, apiHostPort);
} }
} }

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs

@ -68,7 +68,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo
steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName)); steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName));
} }
if (uiFramework == UiFramework.BlazorServer) if (uiFramework == UiFramework.BlazorServer || uiFramework == UiFramework.BlazorWebApp)
{ {
var blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme"; var blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme";
var blazorServerPackageJsonFilePaths = new List<string> var blazorServerPackageJsonFilePaths = new List<string>

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/_Imports.razor

@ -7,7 +7,7 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.AspNetCore.Components.Web.Virtualization
@using static Microsoft.AspNetCore.Components.Web.RenderMode @using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.JSInterop @using Microsoft.JSInterop
@using MyCompanyName.MyProjectName.Blazor.Server @using MyCompanyName.MyProjectName
@using Blazorise @using Blazorise
@using Blazorise.DataGrid @using Blazorise.DataGrid
@using Volo.Abp.BlazoriseUI @using Volo.Abp.BlazoriseUI

2
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/_Imports.razor

@ -7,7 +7,7 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.AspNetCore.Components.Web.Virtualization
@using static Microsoft.AspNetCore.Components.Web.RenderMode @using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.JSInterop @using Microsoft.JSInterop
@using MyCompanyName.MyProjectName.Blazor.Server @using MyCompanyName.MyProjectName
@using Blazorise @using Blazorise
@using Blazorise.DataGrid @using Blazorise.DataGrid
@using Volo.Abp.BlazoriseUI @using Volo.Abp.BlazoriseUI

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/appsettings.json

@ -13,7 +13,7 @@
"AuthServer": { "AuthServer": {
"Authority": "https://localhost:44301", "Authority": "https://localhost:44301",
"RequireHttpsMetadata": true, "RequireHttpsMetadata": true,
"ClientId": "MyProjectName_BlazorServerTiered", "ClientId": "MyProjectName_BlazorWebAppTiered",
"ClientSecret": "1q2w3e*", "ClientSecret": "1q2w3e*",
"IsContainerized": false "IsContainerized": false
}, },

6
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor.cs

@ -0,0 +1,6 @@
namespace MyCompanyName.MyProjectName.Blazor.Host.Client.Pages;
public partial class Index
{
}

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host.Client/Pages/Index.razor.css

@ -0,0 +1 @@
/* Write here your styles for the Index page */

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/Program.cs

@ -8,6 +8,7 @@ using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
//https://github.com/dotnet/aspnetcore/issues/52530
builder.Services.Configure<RouteOptions>(options => builder.Services.Configure<RouteOptions>(options =>
{ {
options.SuppressCheckForUnhandledSecurityMetadata = true; options.SuppressCheckForUnhandledSecurityMetadata = true;

Loading…
Cancel
Save