diff --git a/src/ProjectTemplates/Shared/Project.cs b/src/ProjectTemplates/Shared/Project.cs
index b9e9e7d60a91..58df70e03eba 100644
--- a/src/ProjectTemplates/Shared/Project.cs
+++ b/src/ProjectTemplates/Shared/Project.cs
@@ -352,6 +352,16 @@ public async Task VerifyLaunchSettings(string[] expectedLaunchProfileNames)
}
}
+ public async Task VerifyHasProperty(string propertyName, string expectedValue)
+ {
+ var projectFile = Directory.EnumerateFiles(TemplateOutputDir, "*proj").FirstOrDefault();
+
+ Assert.NotNull(projectFile);
+
+ var projectFileContents = await File.ReadAllTextAsync(projectFile);
+ Assert.Contains($"<{propertyName}>{expectedValue}{propertyName}>", projectFileContents);
+ }
+
public string ReadFile(string path)
{
AssertFileExists(path, shouldExist: true);
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/Api-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/Api-CSharp.csproj.in
index c42865b4b667..ae3d10f13686 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/Api-CSharp.csproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/Api-CSharp.csproj.in
@@ -7,6 +7,7 @@
true
Company.WebApplication1
false
+ true
true
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/GrpcService-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/GrpcService-CSharp.csproj.in
index 3554a4084796..3b003a21c4b3 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/GrpcService-CSharp.csproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/GrpcService-CSharp.csproj.in
@@ -4,6 +4,7 @@
${DefaultNetCoreTargetFramework}
enable
enable
+ true
true
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in
index 5b949b47fba0..e79188f36d01 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-CSharp.csproj.in
@@ -4,6 +4,7 @@
${DefaultNetCoreTargetFramework}
enable
enable
+ true
aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502
True
Company.WebApplication1
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-FSharp.fsproj.in b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-FSharp.fsproj.in
index 8a9f8ed0e2e5..2065714d5cb2 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/WebApi-FSharp.fsproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/WebApi-FSharp.fsproj.in
@@ -2,6 +2,7 @@
${DefaultNetCoreTargetFramework}
+ true
True
Company.WebApplication1
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/Worker-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/Worker-CSharp.csproj.in
index 19004ba1c8e9..85186fbef735 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/Worker-CSharp.csproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/Worker-CSharp.csproj.in
@@ -4,6 +4,7 @@
${DefaultNetCoreTargetFramework}
enable
enable
+ true
dotnet-Company.Application1-53bc9b9d-9d6a-45d4-8429-2a2761773502
True
Company.Application1
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/Worker-FSharp.fsproj.in b/src/ProjectTemplates/Web.ProjectTemplates/Worker-FSharp.fsproj.in
index c3905c0a7424..c106066e6eff 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/Worker-FSharp.fsproj.in
+++ b/src/ProjectTemplates/Web.ProjectTemplates/Worker-FSharp.fsproj.in
@@ -3,6 +3,7 @@
${DefaultNetCoreTargetFramework}
dotnet-Company.Application1-53bc9b9d-9d6a-45d4-8429-2a2761773502
+ true
True
Company.Application1
diff --git a/src/ProjectTemplates/test/Templates.Tests/ApiTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/ApiTemplateTest.cs
index 319c7054207e..62bf4a7f3ad3 100644
--- a/src/ProjectTemplates/test/Templates.Tests/ApiTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/ApiTemplateTest.cs
@@ -65,6 +65,8 @@ private async Task ApiTemplateCore(string languageOverride, string[] args = null
: new[] { "http", "IIS Express" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
+ await project.VerifyHasProperty("InvariantGlobalization", "true");
+
// Avoid the F# compiler. See https://github.com/dotnet/aspnetcore/issues/14022
if (languageOverride != null)
{
diff --git a/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
index 7c4385d56e8c..e0d4fdecce8e 100644
--- a/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
@@ -75,6 +75,8 @@ private async Task GrpcTemplateCore(string[] args = null)
var expectedLaunchProfileNames = new[] { "http", "https" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
+ await project.VerifyHasProperty("InvariantGlobalization", "true");
+
await project.RunDotNetPublishAsync();
await project.RunDotNetBuildAsync();
diff --git a/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
index 4c1ad90756e4..46ca63e0c569 100644
--- a/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
@@ -40,6 +40,8 @@ public async Task WorkerTemplateAsync(string language, string[] args)
await project.RunDotNetNewAsync("worker", language: language, args: args);
+ await project.VerifyHasProperty("InvariantGlobalization", "true");
+
await project.RunDotNetPublishAsync();
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release