diff --git a/src/Scaffolding/VS.Web.CG.Mvc/BlazorIdentity/BlazorIdentityGenerator.cs b/src/Scaffolding/VS.Web.CG.Mvc/BlazorIdentity/BlazorIdentityGenerator.cs index 987be5ff2c..c399bb7903 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/BlazorIdentity/BlazorIdentityGenerator.cs +++ b/src/Scaffolding/VS.Web.CG.Mvc/BlazorIdentity/BlazorIdentityGenerator.cs @@ -171,7 +171,12 @@ internal async Task ValidateAndBuild(BlazorIdentityCommandL } var rootIdentityNamespace = $"{commandlineModel.RootNamespace}.Components.Account"; - var layoutNamespace = $"{commandlineModel.RootNamespace}.Components.Layout.MainLayout"; + // For WASM/Auto Global Blazor projects, MainLayout lives in the client project (e.g. BlazorApp1.Client). + // For Blazor Server projects, it lives directly under Components/Layout/ in the server project. + var mainLayoutInServerProject = Path.Combine(AppInfo.ApplicationBasePath, "Components", "Layout", "MainLayout.razor"); + var layoutNamespace = FileSystem.FileExists(mainLayoutInServerProject) + ? $"{commandlineModel.RootNamespace}.Components.Layout.MainLayout" + : $"{commandlineModel.RootNamespace}.Client.Layout.MainLayout"; var defaultDbContextNamespace = $"{commandlineModel.RootNamespace}.Data"; var defaultUserNamespace = $"{commandlineModel.RootNamespace}.Data"; var blazorIdentityModel = new BlazorIdentityModel diff --git a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs index fe5d105c11..ada9d2638a 100644 --- a/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs +++ b/src/dotnet-scaffolding/dotnet-scaffold/AspNet/ScaffoldSteps/ValidateIdentityStep.cs @@ -213,7 +213,16 @@ public override async Task ExecuteAsync(ScaffolderContext context, Cancell if (!string.IsNullOrEmpty(projectName)) { identityNamespace = settings.BlazorScenario ? $"{projectName}.Components.Account" : $"{projectName}.Areas.Identity"; - identityLayoutNamespace = settings.BlazorScenario ? $"{projectName}.Components.Layout.MainLayout" : string.Empty; + if (settings.BlazorScenario) + { + // For WASM/Auto Global Blazor projects, MainLayout lives in the client project (e.g. BlazorApp1.Client). + // For Blazor Server projects, it lives directly under Components/Layout/ in the server project. + var mainLayoutInServerProject = Path.Combine(projectDirectory, "Components", "Layout", "MainLayout.razor"); + identityLayoutNamespace = _fileSystem.FileExists(mainLayoutInServerProject) + ? $"{projectName}.Components.Layout.MainLayout" + : $"{projectName}.Client.Layout.MainLayout"; + } + userClassNamespace = $"{projectName}.Data"; }