diff --git a/Directory.Packages.props b/Directory.Packages.props
index 21fe0d38bf..5b6839ec30 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -122,7 +122,7 @@
-
+
diff --git a/docs/en/Community-Articles/2025-11-21-AntiGravity/Post.md b/docs/en/Community-Articles/2025-11-21-AntiGravity/Post.md
index fb82a314f2..d5e34e7892 100644
--- a/docs/en/Community-Articles/2025-11-21-AntiGravity/Post.md
+++ b/docs/en/Community-Articles/2025-11-21-AntiGravity/Post.md
@@ -47,6 +47,11 @@ After installing, I restarted AntiGravity and now I can see the red circle which

+### Another Extension For Debugging .NET Apps on VS Code
+
+Recently I heard about DotRush extension from the folks. As they say DotRush works slightly faster and support Razor pages (.cshtml files).
+Here's the link for DotRush https://github.com/JaneySprings/DotRush
+
### Finding Website Running Port
When you run the web project via C# debugger extension, normally it's not using the `launch.json` therefore the website port is not the one when you start from Visual Studio / Rider... So what's my website's port which I just run now? Normally for ASP.NET Core **the default port is 5000**. You can try navigating to http://localhost:5000/.
diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json
index 0bdf5f4898..10e2251b8e 100644
--- a/docs/en/docs-nav.json
+++ b/docs/en/docs-nav.json
@@ -554,7 +554,21 @@
},
{
"text": "Artificial Intelligence",
- "path": "framework/infrastructure/artificial-intelligence/index.md"
+ "items":[
+ {
+ "text": "Overview",
+ "path": "framework/infrastructure/artificial-intelligence/index.md",
+ "isIndex": true
+ },
+ {
+ "text": "Microsoft.Extensions.AI",
+ "path": "framework/infrastructure/artificial-intelligence/microsoft-extensions-ai.md"
+ },
+ {
+ "text": "Semantic Kernel",
+ "path": "framework/infrastructure/artificial-intelligence/microsoft-semantic-kernel.md"
+ }
+ ]
},
{
"text": "Background Jobs",
diff --git a/docs/en/framework/ui/angular/modifying-the-menu.md b/docs/en/framework/ui/angular/modifying-the-menu.md
index 75da5169cb..eec9e79ba0 100644
--- a/docs/en/framework/ui/angular/modifying-the-menu.md
+++ b/docs/en/framework/ui/angular/modifying-the-menu.md
@@ -44,7 +44,29 @@ export const appConfig: ApplicationConfig = {
Notes
- This approach works across themes. If you are using LeptonX, the brand logo component reads these values automatically; you don't need any theme-specific code.
-- You can still override visuals with CSS variables if desired. See the LeptonX section for CSS overrides.
+- You can still override visuals with CSS variables if desired. See the alternative approach below.
+
+### Alternative: Using CSS Variables (LeptonX Theme)
+
+If you're using the LeptonX theme, you can also configure the logo using CSS variables in your `styles.scss` file. This approach is specific to LeptonX and provides direct control over the logo styling.
+
+Add the following to your `src/styles.scss`:
+
+```scss
+:root {
+ --lpx-logo: url('/assets/images/logo/logo-light.png');
+ --lpx-logo-icon: url('/assets/images/logo/logo-light-thumbnail.png');
+}
+```
+
+**When to use each approach:**
+
+| Approach | Use Case | Theme Support |
+|----------|----------|-------------|
+| **provideLogo** (recommended) | Cross-theme compatibility, environment-based configuration | All themes |
+| **CSS Variables** | LeptonX-specific styling, fine-grained CSS control | LeptonX only |
+
+**Recommendation:** Use the `provideLogo` approach for most cases as it's theme-independent and follows ABP's standard configuration pattern. Use CSS variables only when you need LeptonX-specific styling control or have existing CSS-based theme customizations.
## How to Add a Navigation Element
diff --git a/docs/en/images/abp-overall-diagram-1600.png b/docs/en/images/abp-overall-diagram-1600.png
index 16d397466a..3b02dd66dc 100644
Binary files a/docs/en/images/abp-overall-diagram-1600.png and b/docs/en/images/abp-overall-diagram-1600.png differ
diff --git a/docs/en/images/db-options.png b/docs/en/images/db-options.png
index 91d2b51ce7..d25811c49b 100644
Binary files a/docs/en/images/db-options.png and b/docs/en/images/db-options.png differ
diff --git a/docs/en/images/ui-options.png b/docs/en/images/ui-options.png
index 6affab9d21..3c30cd16d7 100644
Binary files a/docs/en/images/ui-options.png and b/docs/en/images/ui-options.png differ
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationPartSorter.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationPartSorter.cs
index d0ba8b98c0..554ec424bd 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationPartSorter.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationPartSorter.cs
@@ -15,7 +15,8 @@ public static class ApplicationPartSorter
{
var orderedModuleAssemblies = moduleContainer.Modules
.Select((moduleDescriptor, index) => new { moduleDescriptor.Assembly, index })
- .ToDictionary(x => x.Assembly, x => x.index);
+ .GroupBy(x => x.Assembly)
+ .ToDictionary(g => g.Key, g => g.First().index);
var modulesAssemblies = moduleContainer.Modules.Select(x => x.Assembly).ToList();
var sortedTypes = partManager.ApplicationParts
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
index 7e7457b753..4a5e48c220 100644
--- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
@@ -48,7 +48,7 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
{
return false;
}
-
+
if (!permission.IsEnabled)
{
return false;
@@ -92,12 +92,12 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
return isGranted;
}
- public async Task IsGrantedAsync(string[] names)
+ public virtual async Task IsGrantedAsync(string[] names)
{
return await IsGrantedAsync(PrincipalAccessor.Principal, names);
}
- public async Task IsGrantedAsync(ClaimsPrincipal? claimsPrincipal, string[] names)
+ public virtual async Task IsGrantedAsync(ClaimsPrincipal? claimsPrincipal, string[] names)
{
Check.NotNull(names, nameof(names));
@@ -146,16 +146,27 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
claimsPrincipal);
var multipleResult = await provider.CheckAsync(context);
- foreach (var grantResult in multipleResult.Result.Where(grantResult =>
- result.Result.ContainsKey(grantResult.Key) &&
- result.Result[grantResult.Key] == PermissionGrantResult.Undefined &&
- grantResult.Value != PermissionGrantResult.Undefined))
+
+ foreach (var grantResult in multipleResult.Result.Where(x => result.Result.ContainsKey(x.Key)))
{
- result.Result[grantResult.Key] = grantResult.Value;
- permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key);
+ switch (grantResult.Value)
+ {
+ case PermissionGrantResult.Granted:
+ {
+ if (result.Result[grantResult.Key] != PermissionGrantResult.Prohibited)
+ {
+ result.Result[grantResult.Key] = PermissionGrantResult.Granted;
+ }
+ break;
+ }
+ case PermissionGrantResult.Prohibited:
+ result.Result[grantResult.Key] = PermissionGrantResult.Prohibited;
+ permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key);
+ break;
+ }
}
- if (result.AllGranted || result.AllProhibited)
+ if (result.AllProhibited)
{
break;
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationPart/ApplicationPartSorter_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationPart/ApplicationPartSorter_Tests.cs
index 829aa23527..c8324e466a 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationPart/ApplicationPartSorter_Tests.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ApplicationPart/ApplicationPartSorter_Tests.cs
@@ -26,6 +26,13 @@ public class ApplicationPartSorter_Tests
partManager.ApplicationParts.Add(new AssemblyPart(assembly));
moduleDescriptors.Add(CreateModuleDescriptor(assembly));
}
+
+ var dumplicateAssembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName($"ModuleB.dll"), AssemblyBuilderAccess.Run);
+ partManager.ApplicationParts.Add(new AssemblyPart(dumplicateAssembly));
+ partManager.ApplicationParts.Add(new AssemblyPart(dumplicateAssembly));
+ moduleDescriptors.Add(CreateModuleDescriptor(dumplicateAssembly));
+ moduleDescriptors.Add(CreateModuleDescriptor(dumplicateAssembly));
+
var randomApplicationParts = partManager.ApplicationParts.OrderBy(x => Guid.NewGuid()).ToList(); // Shuffle the parts
// Additional part
@@ -44,7 +51,7 @@ public class ApplicationPartSorter_Tests
ApplicationPartSorter.Sort(partManager, moduleContainer);
// Act
- partManager.ApplicationParts.Count.ShouldBe(13); // 10 modules + 3 additional parts
+ partManager.ApplicationParts.Count.ShouldBe(15); // 10 modules + 3 additional parts + 2 duplicate parts
var applicationParts = partManager.ApplicationParts.Reverse().ToList(); // Reverse the order to match the expected output
@@ -60,7 +67,9 @@ public class ApplicationPartSorter_Tests
applicationParts[9].ShouldBeOfType().Assembly.GetName().Name.ShouldStartWith("ModuleA7");
applicationParts[10].ShouldBeOfType().Assembly.GetName().Name.ShouldStartWith("ModuleA8");
applicationParts[11].ShouldBeOfType().Assembly.GetName().Name.ShouldStartWith("ModuleA9");
- applicationParts[12].ShouldBeOfType().Assembly.ShouldBe(typeof(AbpVirtualFileSystemModule).Assembly);
+ applicationParts[12].ShouldBeOfType().Assembly.GetName().Name.ShouldStartWith("ModuleB");
+ applicationParts[13].ShouldBeOfType().Assembly.GetName().Name.ShouldStartWith("ModuleB");
+ applicationParts[14].ShouldBeOfType().Assembly.ShouldBe(typeof(AbpVirtualFileSystemModule).Assembly);
}
private static IModuleContainer CreateFakeModuleContainer(List moduleDescriptors)
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs
index a4980a58ec..fca3d209b0 100644
--- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs
@@ -31,6 +31,8 @@ public class AbpAuthorizationTestModule : AbpModule
{
options.ValueProviders.Add();
options.ValueProviders.Add();
+ options.ValueProviders.Add();
+ options.ValueProviders.Add();
});
}
}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_Tests.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_Tests.cs
index f39c48e435..c641f21e92 100644
--- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_Tests.cs
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionChecker_Tests.cs
@@ -8,7 +8,7 @@ namespace Volo.Abp.Authorization;
public class PermissionChecker_Tests: AuthorizationTestBase
{
private readonly IPermissionChecker _permissionChecker;
-
+
public PermissionChecker_Tests()
{
_permissionChecker = GetRequiredService();
@@ -21,6 +21,13 @@ public class PermissionChecker_Tests: AuthorizationTestBase
(await _permissionChecker.IsGrantedAsync("UndefinedPermission")).ShouldBe(false);
}
+ [Fact]
+ public async Task IsGranted_ProhibitedAsync()
+ {
+ (await _permissionChecker.IsGrantedAsync("MyPermission8")).ShouldBe(false);
+ (await _permissionChecker.IsGrantedAsync("MyPermission9")).ShouldBe(false);
+ }
+
[Fact]
public async Task IsGranted_Multiple_Result_Async()
{
@@ -35,7 +42,7 @@ public class PermissionChecker_Tests: AuthorizationTestBase
"MyPermission6",
"MyPermission7"
});
-
+
result.Result["MyPermission1"].ShouldBe(PermissionGrantResult.Undefined);
result.Result["MyPermission2"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["UndefinedPermission"].ShouldBe(PermissionGrantResult.Prohibited);
@@ -44,6 +51,18 @@ public class PermissionChecker_Tests: AuthorizationTestBase
result.Result["MyPermission5"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyPermission6"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyPermission7"].ShouldBe(PermissionGrantResult.Granted);
-
}
-}
\ No newline at end of file
+
+ [Fact]
+ public async Task IsGranted_Multiple_Result_ProhibitedAsync()
+ {
+ var result = await _permissionChecker.IsGrantedAsync(new []
+ {
+ "MyPermission8",
+ "MyPermission9"
+ });
+
+ result.Result["MyPermission8"].ShouldBe(PermissionGrantResult.Prohibited);
+ result.Result["MyPermission9"].ShouldBe(PermissionGrantResult.Prohibited);
+ }
+}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs
index b2a9179415..7e8ed5e949 100644
--- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs
@@ -16,11 +16,11 @@ public class AuthorizationTestPermissionDefinitionProvider : PermissionDefinitio
var group = context.AddGroup("TestGroup");
group[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestPermissionDefinitionProvider).FullName);
-
+
var permission1 = group.AddPermission("MyAuthorizedService1");
permission1[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestPermissionDefinitionProvider).FullName);
-
+
group.AddPermission("MyPermission1").StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());
group.AddPermission("MyPermission2");
group.AddPermission("MyPermission3");
@@ -28,6 +28,8 @@ public class AuthorizationTestPermissionDefinitionProvider : PermissionDefinitio
group.AddPermission("MyPermission5");
group.AddPermission("MyPermission6").WithProviders(nameof(TestPermissionValueProvider1));
group.AddPermission("MyPermission7").WithProviders(nameof(TestPermissionValueProvider2));
+ group.AddPermission("MyPermission8");
+ group.AddPermission("MyPermission9");
group.GetPermissionOrNull("MyAuthorizedService1").ShouldNotBeNull();
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider1.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider1.cs
new file mode 100644
index 0000000000..2f667cb791
--- /dev/null
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider1.cs
@@ -0,0 +1,38 @@
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Authorization.Permissions;
+
+namespace Volo.Abp.Authorization.TestServices;
+
+public class TestProhibitedPermissionValueProvider1 : PermissionValueProvider
+{
+ public TestProhibitedPermissionValueProvider1(IPermissionStore permissionStore) : base(permissionStore)
+ {
+ }
+
+ public override string Name => "TestProhibitedPermissionValueProvider1";
+
+ public override Task CheckAsync(PermissionValueCheckContext context)
+ {
+ var result = PermissionGrantResult.Undefined;
+ if (context.Permission.Name == "MyPermission8" || context.Permission.Name == "MyPermission9")
+ {
+ result = PermissionGrantResult.Granted;
+ }
+
+ return Task.FromResult(result);
+ }
+
+ public override Task CheckAsync(PermissionValuesCheckContext context)
+ {
+ var result = new MultiplePermissionGrantResult();
+ foreach (var name in context.Permissions.Select(x => x.Name))
+ {
+ result.Result.Add(name, name == "MyPermission8" || name == "MyPermission9"
+ ? PermissionGrantResult.Granted
+ : PermissionGrantResult.Undefined);
+ }
+
+ return Task.FromResult(result);
+ }
+}
diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider2.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider2.cs
new file mode 100644
index 0000000000..0311c19a65
--- /dev/null
+++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/TestProhibitedPermissionValueProvider2.cs
@@ -0,0 +1,38 @@
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Authorization.Permissions;
+
+namespace Volo.Abp.Authorization.TestServices;
+
+public class TestProhibitedPermissionValueProvider2 : PermissionValueProvider
+{
+ public TestProhibitedPermissionValueProvider2(IPermissionStore permissionStore) : base(permissionStore)
+ {
+ }
+
+ public override string Name => "TestProhibitedPermissionValueProvider2";
+
+ public override Task CheckAsync(PermissionValueCheckContext context)
+ {
+ var result = PermissionGrantResult.Undefined;
+ if (context.Permission.Name == "MyPermission8" || context.Permission.Name == "MyPermission9")
+ {
+ result = PermissionGrantResult.Prohibited;
+ }
+
+ return Task.FromResult(result);
+ }
+
+ public override Task CheckAsync(PermissionValuesCheckContext context)
+ {
+ var result = new MultiplePermissionGrantResult();
+ foreach (var name in context.Permissions.Select(x => x.Name))
+ {
+ result.Result.Add(name, name == "MyPermission8" || name == "MyPermission9"
+ ? PermissionGrantResult.Prohibited
+ : PermissionGrantResult.Undefined);
+ }
+
+ return Task.FromResult(result);
+ }
+}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.js b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.js
index af6f12543b..58cbbbca46 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.js
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/Components/FeatureSettingGroup/Default.js
@@ -13,8 +13,9 @@
});
_featuresModal.onResult(function(){
+ l = abp.localization.getResource("AbpFeatureManagement");
abp.notify.success(l('SavedSuccessfully'));
});
})
-})(jQuery);
\ No newline at end of file
+})(jQuery);
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.js b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.js
index c6ecb6b6b7..2f352b767a 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.js
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Pages/FeatureManagement/feature-management-modal.js
@@ -13,6 +13,7 @@ var abp = abp || {};
let providerName = $('#ProviderName').val();
let prodiverKey = $('#ProviderKey').val();
volo.abp.featureManagement.features.delete(providerName, prodiverKey).then(function () {
+ $("#FeatureManagementForm").get(0).reset();
abp.notify.success(l('SavedSuccessfully'));
$('#featureManagmentModal').modal('hide');
});
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
index 7913af7625..037cf42aa2 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
index 02ac9eecff..43b1ebfc17 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
index e7143cac87..c6d1800bc8 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
@@ -21,7 +21,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
index cf5dc6ab2b..a8bf31d346 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
@@ -73,8 +73,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
index f40926e798..06d3ef4d96 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
@@ -74,8 +74,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
index f4810d4f58..01791b9243 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
@@ -69,7 +69,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
index 8d1ebead7f..ff10498ccf 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
@@ -70,7 +70,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
index 10cf94a45d..ddd2eba8a4 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
index 93bae4a676..fb57cc387a 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
index fab200af99..52ce942043 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
@@ -51,7 +51,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj
index d83f9fb7c6..a05c7e6476 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Client/MyCompanyName.MyProjectName.Blazor.Client.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
index f2a3e6563b..03043afdd3 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
@@ -30,8 +30,8 @@
-
-
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
index de809a8924..9c0f3985f8 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj
index 9cad962872..aa6591bcab 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Client.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj
index 58051e1c8d..f8a19a1921 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.Client.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj
index a4208d5f42..55159c4683 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered/MyCompanyName.MyProjectName.Blazor.WebApp.Tiered.csproj
@@ -32,8 +32,8 @@
-
-
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj
index 2755545498..1aec506594 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.WebApp/MyCompanyName.MyProjectName.Blazor.WebApp.csproj
@@ -30,9 +30,9 @@
-
-
-
+
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
index 813c4e4cf3..ef1012d89d 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
index 219f63070b..bff7c6c558 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
index 738562b386..fa7d6b10d3 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
@@ -28,7 +28,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
index 1c67acc87a..cf8dd3d500 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
@@ -49,7 +49,7 @@
-
+