diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Identity/IdentityGenerator.cs b/src/Scaffolding/VS.Web.CG.Mvc/Identity/IdentityGenerator.cs index 219aed7cb..05fb1fe7d 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Identity/IdentityGenerator.cs +++ b/src/Scaffolding/VS.Web.CG.Mvc/Identity/IdentityGenerator.cs @@ -321,11 +321,7 @@ private CodeSnippet[] ApplyIdentityChanges(CodeSnippet[] filteredChanges, string { foreach (var codeChange in filteredChanges) { - if (!useTopLevelsStatements) - { - codeChange.LeadingTrivia = codeChange.LeadingTrivia ?? new Formatting(); - codeChange.LeadingTrivia.NumberOfSpaces += 12; - } + codeChange.LeadingTrivia = codeChange.LeadingTrivia ?? new Formatting(); codeChange.Block = EditIdentityStrings(codeChange.Block, dbContextClassName, identityUserClassName, useSqlite, codeChange?.LeadingTrivia?.NumberOfSpaces); } @@ -364,11 +360,6 @@ internal static string EditIdentityStrings(string stringToModify, string dbConte modifiedString = modifiedString.Replace("Connection string '{0}'", $"Connection string '{dbContextClassName}Connection'"); } - if (stringToModify.Contains("{1}")) - { - modifiedString = modifiedString.Replace("{1}", new string(' ', spaces.GetValueOrDefault() + 4)); - } - return modifiedString; } diff --git a/src/Scaffolding/VS.Web.CG.Mvc/Identity/identityMinimalHostingChanges.json b/src/Scaffolding/VS.Web.CG.Mvc/Identity/identityMinimalHostingChanges.json index 24121b352..3882b3c1d 100644 --- a/src/Scaffolding/VS.Web.CG.Mvc/Identity/identityMinimalHostingChanges.json +++ b/src/Scaffolding/VS.Web.CG.Mvc/Identity/identityMinimalHostingChanges.json @@ -13,7 +13,7 @@ { "InsertAfter": "builder.Configuration.GetConnectionString", "CheckBlock": "builder.Services.AddDbContext", - "Block": "builder.Services.AddDbContext<{0}>(options =>\r\n{1}options.{0}(connectionString))\"", + "Block": "builder.Services.AddDbContext<{0}>(options => options.{0}(connectionString))\"", "LeadingTrivia": { "Newline": true } @@ -21,7 +21,7 @@ { "InsertAfter": "builder.Services.AddDbContext", "CheckBlock": "builder.Services.AddDefaultIdentity", - "Block": "builder.Services.AddDefaultIdentity<{0}>(options => options.SignIn.RequireConfirmedAccount = true)\r\n{1}.AddEntityFrameworkStores<{0}>()\"", + "Block": "builder.Services.AddDefaultIdentity<{0}>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<{0}>()\"", "LeadingTrivia": { "Newline": true } diff --git a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs index a6c6ce2a4..0ae47d815 100644 --- a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs +++ b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/CodeModifier/DocumentBuilder.cs @@ -194,12 +194,17 @@ internal static SyntaxNode ApplyChangesToMethod(SyntaxNode root, CodeSnippet[] f internal static MethodDeclarationSyntax GetMethodFromSyntaxRoot(CompilationUnitSyntax root, string methodIdentifier) { - var namespaceNode = root.Members.OfType()?.FirstOrDefault(); + BaseNamespaceDeclarationSyntax namespaceNode = root.Members.OfType()?.FirstOrDefault(); + if (namespaceNode == null) + { + namespaceNode = root.Members.OfType()?.FirstOrDefault(); + } + var classNode = namespaceNode?.Members.OfType()?.FirstOrDefault() ?? root?.Members.OfType()?.FirstOrDefault(); if (classNode?.ChildNodes().FirstOrDefault( - n => n is MethodDeclarationSyntax syntax && - syntax.Identifier.ToString().Equals(methodIdentifier, StringComparison.OrdinalIgnoreCase)) is MethodDeclarationSyntax method) + n => n is MethodDeclarationSyntax syntax && + syntax.Identifier.ToString().Equals(methodIdentifier, StringComparison.OrdinalIgnoreCase)) is MethodDeclarationSyntax method) { return method; } diff --git a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ProjectModifierHelper.cs b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ProjectModifierHelper.cs index b06296751..5714c71b7 100644 --- a/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ProjectModifierHelper.cs +++ b/src/Shared/Microsoft.DotNet.Scaffolding.Shared/Project/ProjectModifierHelper.cs @@ -62,16 +62,23 @@ internal static async Task IsUsingTopLevelStatements(IModelTypesLocator mo var programDocument = modelTypesLocator.GetAllDocuments().FirstOrDefault(d => d.Name.EndsWith("Program.cs")); if (programDocument != null && await programDocument.GetSyntaxRootAsync() is CompilationUnitSyntax root) { - var fileScopedNamespaceNode = root.Members.OfType()?.FirstOrDefault(); - if (fileScopedNamespaceNode == null) + BaseNamespaceDeclarationSyntax namespaceNode = root.Members.OfType()?.FirstOrDefault(); + if (namespaceNode == null) { - var namespaceNode = root.Members.OfType()?.FirstOrDefault(); - var classNode = namespaceNode?.Members.OfType()?.FirstOrDefault(); - var mainMethod = classNode?.ChildNodes().FirstOrDefault(n => n is MethodDeclarationSyntax - && ((MethodDeclarationSyntax)n).Identifier.ToString().Equals(Main, StringComparison.OrdinalIgnoreCase)); + namespaceNode = root.Members.OfType()?.FirstOrDefault(); + } + var classNode = namespaceNode?.Members.OfType()?.FirstOrDefault(); + var mainMethod = classNode?.ChildNodes().FirstOrDefault(n => n is MethodDeclarationSyntax syntax + && syntax.Identifier.ToString().Equals(Main, StringComparison.OrdinalIgnoreCase)); - return mainMethod == null; + if (mainMethod == null) + { + mainMethod = namespaceNode?.ChildNodes().FirstOrDefault( + n => n is MethodDeclarationSyntax syntax && + syntax.Identifier.ToString().Equals(Main, StringComparison.OrdinalIgnoreCase)); } + + return mainMethod == null; } return true;