diff --git a/src/ProjectTemplates/Shared/Project.cs b/src/ProjectTemplates/Shared/Project.cs
index 1706366af32d..0fe3631e5695 100644
--- a/src/ProjectTemplates/Shared/Project.cs
+++ b/src/ProjectTemplates/Shared/Project.cs
@@ -466,7 +466,7 @@ private void CaptureBinLogOnFailure(ProcessEx result)
if (result.ExitCode != 0 && !string.IsNullOrEmpty(ArtifactsLogDir))
{
var sourceFile = Path.Combine(TemplateOutputDir, "msbuild.binlog");
- Assert.True(File.Exists(sourceFile), $"Log for '{ProjectName}' not found in '{sourceFile}'.");
+ Assert.True(File.Exists(sourceFile), $"Log for '{ProjectName}' not found in '{sourceFile}'. Execution output: {result.Output}");
var destination = Path.Combine(ArtifactsLogDir, ProjectName + ".binlog");
File.Move(sourceFile, destination, overwrite: true); // binlog will exist on retries
}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/EmptyBlazorServerWeb-CSharp.csproj.in b/src/ProjectTemplates/Web.ProjectTemplates/EmptyBlazorServerWeb-CSharp.csproj.in
new file mode 100644
index 000000000000..d3a39c650379
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/EmptyBlazorServerWeb-CSharp.csproj.in
@@ -0,0 +1,11 @@
+
+
+
+ ${DefaultNetCoreTargetFramework}
+ enable
+ enable
+ True
+ EmptyBlazorServerWeb_CSharp
+
+
+
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj b/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
index 2dc413643421..ceae5ca94720 100644
--- a/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
+++ b/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj
@@ -56,6 +56,7 @@
+
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/dotnetcli.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/dotnetcli.host.json
new file mode 100644
index 000000000000..d97858472b80
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/dotnetcli.host.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json.schemastore.org/dotnetcli.host",
+ "symbolInfo": {
+ "Framework": {
+ "longName": "framework"
+ },
+ "skipRestore": {
+ "longName": "no-restore",
+ "shortName": ""
+ },
+ "kestrelHttpPort": {
+ "isHidden": true
+ },
+ "kestrelHttpsPort": {
+ "isHidden": true
+ },
+ "iisHttpPort": {
+ "isHidden": true
+ },
+ "iisHttpsPort": {
+ "isHidden": true
+ },
+ "ExcludeLaunchSettings": {
+ "longName": "exclude-launch-settings",
+ "shortName": ""
+ },
+ "NoHttps": {
+ "longName": "no-https",
+ "shortName": ""
+ }
+ },
+ "usageExamples": [
+ ""
+ ]
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide.host.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide.host.json
new file mode 100644
index 000000000000..278a9a31ca51
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide.host.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "http://json.schemastore.org/ide.host",
+ "order": 650,
+ "icon": "ide/icon.png",
+ "disableHttpsSymbol": "NoHttps",
+ "supportsDocker": true,
+ "tags": [
+ {
+ "type": "projectType",
+ "add": [ "Cloud", "Web" ],
+ "remove": [ "*" ]
+ },
+ {
+ "type": "platform",
+ "add": [ "Linux", "macOS", "Windows" ]
+ }
+ ]
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide/icon.png b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide/icon.png
new file mode 100644
index 000000000000..8422b5969593
Binary files /dev/null and b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/ide/icon.png differ
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.cs.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.cs.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.cs.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.de.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.de.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.de.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.en.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.en.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.en.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.es.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.es.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.es.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.fr.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.fr.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.fr.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.it.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.it.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.it.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ja.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ja.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ja.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ko.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ko.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ko.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pl.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pl.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pl.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.pt-BR.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ru.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ru.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.ru.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.tr.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.tr.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.tr.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hans.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json
new file mode 100644
index 000000000000..640cc3e5508d
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/localize/templatestrings.zh-Hant.json
@@ -0,0 +1,16 @@
+{
+ "author": "Microsoft",
+ "name": "Blazor Server App Empty",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "symbols/ExcludeLaunchSettings/description": "Whether to exclude launchSettings.json from the generated template.",
+ "symbols/kestrelHttpPort/description": "Port number to use for the HTTP endpoint in launchSettings.json.",
+ "symbols/kestrelHttpsPort/description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/iisHttpPort/description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json.",
+ "symbols/iisHttpsPort/description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used.",
+ "symbols/NoHttps/description": "Whether to turn off HTTPS.",
+ "symbols/Framework/description": "The target framework for the project.",
+ "symbols/Framework/choices/net7.0/description": "Target net7.0",
+ "symbols/skipRestore/description": "If specified, skips the automatic restore of the project on create.",
+ "postActions/restore/description": "Restore NuGet packages required by this project.",
+ "postActions/restore/manualInstructions/default/text": "Run 'dotnet restore'"
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/template.json
new file mode 100644
index 000000000000..577fe646331f
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/.template.config/template.json
@@ -0,0 +1,198 @@
+{
+ "$schema": "http://json.schemastore.org/template",
+ "author": "Microsoft",
+ "classifications": [
+ "Web",
+ "Blazor",
+ "Empty"
+ ],
+ "name": "Blazor Server App Empty",
+ "generatorVersions": "[1.0.0.0-*)",
+ "description": "An empty project template for creating a Blazor server app that runs server-side inside an ASP.NET Core app and handles user interactions over a SignalR connection. This template does not have any content in it.",
+ "groupIdentity": "Microsoft.Web.Blazor.Server.Empty",
+ "precedence": "9000",
+ "identity": "Microsoft.Web.Blazor.Server.Empty.CSharp.7.0",
+ "shortName": "blazorserver-empty",
+ "thirdPartyNotices": "https://aka.ms/aspnetcore/7.0-third-party-notices",
+ "tags": {
+ "language": "C#",
+ "type": "project"
+ },
+ "sourceName": "EmptyBlazorServerWeb-CSharp",
+ "preferNameDirectory": true,
+ "sources": [
+ {
+ "source": "./",
+ "target": "./",
+ "exclude": [
+ ".template.config/**"
+ ],
+ "copyOnly": [
+ "wwwroot/**"
+ ],
+ "modifiers": [
+ {
+ "condition": "(ExcludeLaunchSettings)",
+ "exclude": [
+ "Properties/launchSettings.json"
+ ]
+ }
+ ]
+ }
+ ],
+ "symbols": {
+ "ExcludeLaunchSettings": {
+ "type": "parameter",
+ "datatype": "bool",
+ "defaultValue": "false",
+ "description": "Whether to exclude launchSettings.json from the generated template."
+ },
+ "kestrelHttpPort": {
+ "type": "parameter",
+ "datatype": "integer",
+ "description": "Port number to use for the HTTP endpoint in launchSettings.json."
+ },
+ "kestrelHttpPortGenerated": {
+ "type": "generated",
+ "generator": "port",
+ "parameters": {
+ "low": 5000,
+ "high": 5300
+ }
+ },
+ "kestrelHttpPortReplacer": {
+ "type": "generated",
+ "generator": "coalesce",
+ "parameters": {
+ "sourceVariableName": "kestrelHttpPort",
+ "fallbackVariableName": "kestrelHttpPortGenerated"
+ },
+ "replaces": "5000"
+ },
+ "kestrelHttpsPort": {
+ "type": "parameter",
+ "datatype": "integer",
+ "description": "Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used."
+ },
+ "kestrelHttpsPortGenerated": {
+ "type": "generated",
+ "generator": "port",
+ "parameters": {
+ "low": 7000,
+ "high": 7300
+ }
+ },
+ "kestrelHttpsPortReplacer": {
+ "type": "generated",
+ "generator": "coalesce",
+ "parameters": {
+ "sourceVariableName": "kestrelHttpsPort",
+ "fallbackVariableName": "kestrelHttpsPortGenerated"
+ },
+ "replaces": "5001"
+ },
+ "iisHttpPort": {
+ "type": "parameter",
+ "datatype": "integer",
+ "description": "Port number to use for the IIS Express HTTP endpoint in launchSettings.json."
+ },
+ "iisHttpPortGenerated": {
+ "type": "generated",
+ "generator": "port"
+ },
+ "iisHttpPortReplacer": {
+ "type": "generated",
+ "generator": "coalesce",
+ "parameters": {
+ "sourceVariableName": "iisHttpPort",
+ "fallbackVariableName": "iisHttpPortGenerated"
+ },
+ "replaces": "8080"
+ },
+ "iisHttpsPort": {
+ "type": "parameter",
+ "datatype": "integer",
+ "description": "Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used."
+ },
+ "iisHttpsPortGenerated": {
+ "type": "generated",
+ "generator": "port",
+ "parameters": {
+ "low": 44300,
+ "high": 44399
+ }
+ },
+ "iisHttpsPortReplacer": {
+ "type": "generated",
+ "generator": "coalesce",
+ "parameters": {
+ "sourceVariableName": "iisHttpsPort",
+ "fallbackVariableName": "iisHttpsPortGenerated"
+ },
+ "replaces": "44300"
+ },
+ "HasHttpProfile": {
+ "type": "parameter",
+ "datatype": "bool",
+ "defaultValue": "true",
+ "description": "Always have HTTP profile."
+ },
+ "HasHttpsProfile": {
+ "type": "computed",
+ "value": "(!NoHttps)"
+ },
+ "NoHttps": {
+ "type": "parameter",
+ "datatype": "bool",
+ "defaultValue": "false",
+ "description": "Whether to turn off HTTPS."
+ },
+ "Framework": {
+ "type": "parameter",
+ "description": "The target framework for the project.",
+ "datatype": "choice",
+ "choices": [
+ {
+ "choice": "net7.0",
+ "description": "Target net7.0"
+ }
+ ],
+ "replaces": "net7.0",
+ "defaultValue": "net7.0"
+ },
+ "copyrightYear": {
+ "type": "generated",
+ "generator": "now",
+ "replaces": "copyrightYear",
+ "parameters": {
+ "format": "yyyy"
+ }
+ },
+ "skipRestore": {
+ "type": "parameter",
+ "datatype": "bool",
+ "description": "If specified, skips the automatic restore of the project on create.",
+ "defaultValue": "false"
+ }
+ },
+ "primaryOutputs": [
+ {
+ "path": "EmptyBlazorServerWeb-CSharp.csproj"
+ }
+ ],
+ "defaultName": "EmptyBlazorApp",
+ "postActions": [
+ {
+ "id": "restore",
+ "condition": "(!skipRestore)",
+ "description": "Restore NuGet packages required by this project.",
+ "manualInstructions": [
+ {
+ "text": "Run 'dotnet restore'"
+ }
+ ],
+ "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
+ "continueOnError": true
+ }
+ ]
+}
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/App.razor b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/App.razor
new file mode 100644
index 000000000000..6fd3ed1b5a3b
--- /dev/null
+++ b/src/ProjectTemplates/Web.ProjectTemplates/content/EmptyBlazorServerWeb-CSharp/App.razor
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Not found
+
+
+
+ An error has occurred. This application may no longer respond until reloaded.
+
+
+ An unhandled exception has occurred. See browser dev tools for details.
+
+ Reload
+ 🗙
+