From e17922446614ceed745a2f50530cdfcb6d43ec9e Mon Sep 17 00:00:00 2001
From: Bart Koelman <104792814+bart-vmware@users.noreply.github.com>
Date: Mon, 11 May 2026 13:04:13 +0200
Subject: [PATCH 1/3] Drop .NET 6
---
.github/workflows/build.yml | 1 -
.../CSharp/.template.config/template.json | 21 --------------
.../CSharp/Company.WebApplication.CS.csproj | 1 -
.../CSharp/Dockerfile | 13 ++-------
.../CSharp/Program.cs | 15 ++--------
.../CSharp/Properties/launchSettings.json | 10 ++-----
.../ConnectorMySqlOptionTest.cs | 1 -
.../ConnectorSqlServerOptionTest.cs | 1 -
.../DefaultsTest.cs | 10 ++-----
.../DockerfileOptionTest.cs | 29 ++++---------------
.../FrameworkParameterTest.cs | 1 -
.../Models/Framework.cs | 1 -
.../Models/TemplateOptions.cs | 1 -
13 files changed, 16 insertions(+), 89 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0021dda..7db96c2 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -40,7 +40,6 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
- 6.0.*
8.0.*
9.0.*
10.0.*
diff --git a/src/Content/NetCoreTool.Template.WebApi/CSharp/.template.config/template.json b/src/Content/NetCoreTool.Template.WebApi/CSharp/.template.config/template.json
index 1864ed7..9ccaa84 100644
--- a/src/Content/NetCoreTool.Template.WebApi/CSharp/.template.config/template.json
+++ b/src/Content/NetCoreTool.Template.WebApi/CSharp/.template.config/template.json
@@ -74,10 +74,6 @@
"type": "parameter",
"datatype": "choice",
"choices": [
- {
- "choice": "net6.0",
- "description": "Target net6.0"
- },
{
"choice": "net8.0",
"description": "Target net8.0"
@@ -94,15 +90,6 @@
"defaultValue": "net10.0",
"replaces": "$(FrameworkOption)"
},
- "IsFrameworkNet60": {
- "type": "generated",
- "generator": "regexMatch",
- "datatype": "bool",
- "parameters": {
- "source": "Framework",
- "pattern": "^net6\\.0$"
- }
- },
"IsFrameworkNet80": {
"type": "generated",
"generator": "regexMatch",
@@ -806,10 +793,6 @@
{
"condition": "(Framework == 'net8.0')",
"value": "6.0.*"
- },
- {
- "condition": "(Framework == 'net6.0')",
- "value": "5.2.*"
}
]
}
@@ -832,10 +815,6 @@
{
"condition": "(Framework == 'net8.0')",
"value": "9.3.*"
- },
- {
- "condition": "(Framework == 'net6.0')",
- "value": "9.1.*"
}
]
}
diff --git a/src/Content/NetCoreTool.Template.WebApi/CSharp/Company.WebApplication.CS.csproj b/src/Content/NetCoreTool.Template.WebApi/CSharp/Company.WebApplication.CS.csproj
index 516611f..7e4dffa 100644
--- a/src/Content/NetCoreTool.Template.WebApi/CSharp/Company.WebApplication.CS.csproj
+++ b/src/Content/NetCoreTool.Template.WebApi/CSharp/Company.WebApplication.CS.csproj
@@ -28,7 +28,6 @@
-
diff --git a/src/Content/NetCoreTool.Template.WebApi/CSharp/Dockerfile b/src/Content/NetCoreTool.Template.WebApi/CSharp/Dockerfile
index 58a6c19..7b6c8af 100644
--- a/src/Content/NetCoreTool.Template.WebApi/CSharp/Dockerfile
+++ b/src/Content/NetCoreTool.Template.WebApi/CSharp/Dockerfile
@@ -1,9 +1,7 @@
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
-#if (IsFrameworkNet60)
-FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
-#elif (IsFrameworkNet80)
+#if (IsFrameworkNet80)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
#elif (IsFrameworkNet90)
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
@@ -14,19 +12,12 @@ FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
USER $APP_UID
#endif
WORKDIR /app
-#if (IsFrameworkNet60)
-EXPOSE 80
-EXPOSE 443
-#else
EXPOSE 8080
EXPOSE 8081
-#endif
# This stage is used to build the service project
-#if (IsFrameworkNet60)
-FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
-#elif (IsFrameworkNet80)
+#if (IsFrameworkNet80)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
#elif (IsFrameworkNet90)
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
diff --git a/src/Content/NetCoreTool.Template.WebApi/CSharp/Program.cs b/src/Content/NetCoreTool.Template.WebApi/CSharp/Program.cs
index 1814e41..06990a4 100644
--- a/src/Content/NetCoreTool.Template.WebApi/CSharp/Program.cs
+++ b/src/Content/NetCoreTool.Template.WebApi/CSharp/Program.cs
@@ -147,7 +147,7 @@
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
-#if (IsFrameworkNet60 || IsFrameworkNet80)
+#if (IsFrameworkNet80)
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
@@ -342,7 +342,7 @@
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
-#if (IsFrameworkNet60 || IsFrameworkNet80)
+#if (IsFrameworkNet80)
app.UseSwagger();
app.UseSwaggerUI();
#elif (IsFrameworkNet90 || IsFrameworkNet100)
@@ -365,11 +365,7 @@
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
-#if (IsFrameworkNet60)
- DateTime.Now.AddDays(index),
-#else
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
-#endif
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
@@ -402,14 +398,7 @@
app.Run();
#endif
-#if (IsFrameworkNet60)
-internal record WeatherForecast(DateTime Date, int TemperatureC, string? Summary)
-{
- public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
-}
-#else
internal record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
-#endif
diff --git a/src/Content/NetCoreTool.Template.WebApi/CSharp/Properties/launchSettings.json b/src/Content/NetCoreTool.Template.WebApi/CSharp/Properties/launchSettings.json
index 7601517..bfd1440 100644
--- a/src/Content/NetCoreTool.Template.WebApi/CSharp/Properties/launchSettings.json
+++ b/src/Content/NetCoreTool.Template.WebApi/CSharp/Properties/launchSettings.json
@@ -4,7 +4,7 @@
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
- //#if (IsFrameworkNet60 || IsFrameworkNet80)
+ //#if (IsFrameworkNet80)
"launchBrowser": true,
"launchUrl": "swagger",
//#endif
@@ -16,7 +16,7 @@
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
- //#if (IsFrameworkNet60 || IsFrameworkNet80)
+ //#if (IsFrameworkNet80)
"launchBrowser": true,
"launchUrl": "swagger",
//#endif
@@ -28,19 +28,15 @@
},
"Container (Dockerfile)": {
"commandName": "Docker",
- //#if (IsFrameworkNet60 || IsFrameworkNet80)
+ //#if (IsFrameworkNet80)
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
//#else
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
//#endif
"environmentVariables": {
- //#if (IsFrameworkNet60)
- "ASPNETCORE_URLS": "https://+:443;http://+:80"
- //#else
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
- //#endif
},
"publishAllPorts": true,
"useSSL": true
diff --git a/test/NetCoreTool.Template.WebApi.Test/ConnectorMySqlOptionTest.cs b/test/NetCoreTool.Template.WebApi.Test/ConnectorMySqlOptionTest.cs
index e015fe5..a45d189 100644
--- a/test/NetCoreTool.Template.WebApi.Test/ConnectorMySqlOptionTest.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/ConnectorMySqlOptionTest.cs
@@ -12,7 +12,6 @@ protected override void AssertPackageReferencesHook(ProjectOptions options, List
{
var mySqlVersion = options.Framework switch
{
- Framework.Net60 => "9.1.*",
Framework.Net80 => "9.3.*",
Framework.Net90 => "9.3.*",
Framework.Net100 => "9.6.*",
diff --git a/test/NetCoreTool.Template.WebApi.Test/ConnectorSqlServerOptionTest.cs b/test/NetCoreTool.Template.WebApi.Test/ConnectorSqlServerOptionTest.cs
index dd40ce2..60b7033 100644
--- a/test/NetCoreTool.Template.WebApi.Test/ConnectorSqlServerOptionTest.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/ConnectorSqlServerOptionTest.cs
@@ -12,7 +12,6 @@ protected override void AssertPackageReferencesHook(ProjectOptions options, List
{
var sqlClientVersion = options.Framework switch
{
- Framework.Net60 => "5.2.*",
Framework.Net80 => "6.0.*",
Framework.Net90 => "6.0.*",
Framework.Net100 => "6.1.*",
diff --git a/test/NetCoreTool.Template.WebApi.Test/DefaultsTest.cs b/test/NetCoreTool.Template.WebApi.Test/DefaultsTest.cs
index f6ef0c1..8fac1e4 100644
--- a/test/NetCoreTool.Template.WebApi.Test/DefaultsTest.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/DefaultsTest.cs
@@ -44,11 +44,7 @@ protected override void AssertPackageReferencesHook(ProjectOptions options, List
{
var openApiVersion = GetPackageVersionForFramework(options.Framework);
- if (options.Framework == Framework.Net60)
- {
- packages.Add(("Swashbuckle.AspNetCore", "6.5.0"));
- }
- else if (options.Framework == Framework.Net80)
+ if (options.Framework == Framework.Net80)
{
packages.Add(("Microsoft.AspNetCore.OpenApi", openApiVersion));
packages.Add(("Swashbuckle.AspNetCore", "6.6.2"));
@@ -132,7 +128,7 @@ private void AssertLaunchSettings(ProjectOptions options, LaunchSettings setting
{
foreach (var profile in settings.Profiles.Values)
{
- if (options.Framework is Framework.Net60 or Framework.Net80)
+ if (options.Framework == Framework.Net80)
{
profile.LaunchBrowser.Should().BeTrue();
profile.LaunchUrl.Should().Be("swagger");
@@ -149,7 +145,7 @@ private void AssertLaunchSettings(ProjectOptions options, LaunchSettings setting
protected override void AssertProgramSnippetsHook(ProjectOptions options, List snippets)
{
- if (options.Framework is Framework.Net60 or Framework.Net80)
+ if (options.Framework == Framework.Net80)
{
snippets.Add("// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle");
snippets.Add("builder.Services.AddEndpointsApiExplorer();");
diff --git a/test/NetCoreTool.Template.WebApi.Test/DockerfileOptionTest.cs b/test/NetCoreTool.Template.WebApi.Test/DockerfileOptionTest.cs
index 0db608b..9f1340a 100644
--- a/test/NetCoreTool.Template.WebApi.Test/DockerfileOptionTest.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/DockerfileOptionTest.cs
@@ -65,19 +65,9 @@ protected override async Task AssertProjectGeneration(ProjectOptions options)
dockerfile.Should().ContainSnippet($"RUN dotnet build \"./{projectFile}\"");
dockerfile.Should().ContainSnippet($"RUN dotnet publish \"./{projectFile}\"");
dockerfile.Should().ContainSnippet($"ENTRYPOINT [\"dotnet\", \"{Sandbox.Name}.dll\"");
-
- if (options.Framework == Framework.Net60)
- {
- dockerfile.Should().NotContain("USER $APP_UID");
- dockerfile.Should().ContainSnippet("EXPOSE 80");
- dockerfile.Should().ContainSnippet("EXPOSE 443");
- }
- else
- {
- dockerfile.Should().ContainSnippet("USER $APP_UID");
- dockerfile.Should().ContainSnippet("EXPOSE 8080");
- dockerfile.Should().ContainSnippet("EXPOSE 8081");
- }
+ dockerfile.Should().ContainSnippet("USER $APP_UID");
+ dockerfile.Should().ContainSnippet("EXPOSE 8080");
+ dockerfile.Should().ContainSnippet("EXPOSE 8081");
}
private static string GetImageTag(Framework framework)
@@ -97,7 +87,7 @@ private void AssertLaunchSettings(ProjectOptions options, LaunchSettings setting
var dockerProfile = settings.Profiles[DockerProfileNameInLaunchSettings];
- if (options.Framework is Framework.Net60 or Framework.Net80)
+ if (options.Framework == Framework.Net80)
{
dockerProfile.LaunchBrowser.Should().BeTrue();
dockerProfile.LaunchUrl.Should().Be("{Scheme}://{ServiceHost}:{ServicePort}/swagger");
@@ -108,15 +98,8 @@ private void AssertLaunchSettings(ProjectOptions options, LaunchSettings setting
dockerProfile.LaunchUrl.Should().Be("{Scheme}://{ServiceHost}:{ServicePort}");
}
- if (options.Framework == Framework.Net60)
- {
- dockerProfile.EnvironmentVariables.Should().ContainKey("ASPNETCORE_URLS");
- }
- else
- {
- dockerProfile.EnvironmentVariables.Should().ContainKey("ASPNETCORE_HTTPS_PORTS");
- dockerProfile.EnvironmentVariables.Should().ContainKey("ASPNETCORE_HTTP_PORTS");
- }
+ dockerProfile.EnvironmentVariables.Should().ContainKey("ASPNETCORE_HTTPS_PORTS");
+ dockerProfile.EnvironmentVariables.Should().ContainKey("ASPNETCORE_HTTP_PORTS");
}
protected override void AssertProjectPropertiesHook(ProjectOptions options, Dictionary properties)
diff --git a/test/NetCoreTool.Template.WebApi.Test/FrameworkParameterTest.cs b/test/NetCoreTool.Template.WebApi.Test/FrameworkParameterTest.cs
index 3c05877..c37bf43 100644
--- a/test/NetCoreTool.Template.WebApi.Test/FrameworkParameterTest.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/FrameworkParameterTest.cs
@@ -6,7 +6,6 @@ public class FrameworkParameterTest : ChoiceParameterTest
{
public FrameworkParameterTest(ITestOutputHelper logger) : base("framework", "The target framework for the project.", logger)
{
- Values.Add("net6.0");
Values.Add("net8.0");
Values.Add("net9.0");
Values.Add("net10.0");
diff --git a/test/NetCoreTool.Template.WebApi.Test/Models/Framework.cs b/test/NetCoreTool.Template.WebApi.Test/Models/Framework.cs
index 0cd42cc..c8fade6 100644
--- a/test/NetCoreTool.Template.WebApi.Test/Models/Framework.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/Models/Framework.cs
@@ -2,7 +2,6 @@ namespace Steeltoe.NetCoreTool.Template.WebApi.Test.Models
{
public enum Framework
{
- Net60 = 60,
Net80 = 80,
Net90 = 90,
Net100 = 100
diff --git a/test/NetCoreTool.Template.WebApi.Test/Models/TemplateOptions.cs b/test/NetCoreTool.Template.WebApi.Test/Models/TemplateOptions.cs
index f3d1776..ebbb683 100644
--- a/test/NetCoreTool.Template.WebApi.Test/Models/TemplateOptions.cs
+++ b/test/NetCoreTool.Template.WebApi.Test/Models/TemplateOptions.cs
@@ -11,7 +11,6 @@ public IEnumerator