From d969aeb51fa6cbddaf602c5e0c9616bad3a8cd17 Mon Sep 17 00:00:00 2001 From: John Simons Date: Mon, 25 May 2026 16:40:06 +1000 Subject: [PATCH 1/5] Upgrade test projects to target .NET 11 Update all test projects (`NServiceBus.*Tests.csproj`) to target `net11.0`. This change also updates `global.json` to specify `11.0.100-preview.4.26230.115` SDK and configures the CI workflow to install both `10.0.x` and `11.0.x` .NET SDKs for build compatibility. --- .github/workflows/ci.yml | 4 +++- global.json | 8 ++++---- .../NServiceBus.AcceptanceTests.csproj | 2 +- .../NServiceBus.ContainerTests.csproj | 2 +- src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj | 2 +- src/NServiceBus.Core/Pipeline/PipelineStepDiagnostics.cs | 2 +- .../NServiceBus.Learning.AcceptanceTests.csproj | 2 +- .../NServiceBus.PersistenceTests.csproj | 2 +- .../NServiceBus.TransportTests.csproj | 2 +- 9 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0ed901eed90..ded337e9c05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,9 @@ jobs: - name: Setup .NET SDK uses: actions/setup-dotnet@v5.2.0 with: - global-json-file: global.json + dotnet-version: | + 10.0.x + 11.0.x - name: Build run: dotnet build src --configuration Release - name: Upload packages diff --git a/global.json b/global.json index 2b3567e3704..1040849f738 100644 --- a/global.json +++ b/global.json @@ -1,7 +1,7 @@ { "sdk": { - "version": "10.0.0", - "allowPrerelease": false, - "rollForward": "latestFeature" + "version": "11.0.100-preview.4.26230.115", + "allowPrerelease": true, + "rollForward": "latestPatch" } -} +} \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index 66cab8c266d..c94610c5779 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -1,7 +1,7 @@ - net10.0 + net11.0 diff --git a/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj b/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj index cd575e4d922..e7511583e3c 100644 --- a/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj +++ b/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj @@ -1,7 +1,7 @@ - net10.0 + net11.0 true ..\NServiceBusTests.snk diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index 36ccc18ffd6..baf283dc5ff 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -1,7 +1,7 @@ - net10.0 + net11.0 true ..\NServiceBusTests.snk 13.0 diff --git a/src/NServiceBus.Core/Pipeline/PipelineStepDiagnostics.cs b/src/NServiceBus.Core/Pipeline/PipelineStepDiagnostics.cs index 7dc127aef37..38bb374c3b3 100644 --- a/src/NServiceBus.Core/Pipeline/PipelineStepDiagnostics.cs +++ b/src/NServiceBus.Core/Pipeline/PipelineStepDiagnostics.cs @@ -25,7 +25,7 @@ public static string PrettyPrint(IReadOnlyList steps) var nextContextName = $"context{i}"; sb.AppendLine(); - sb.Append(new string(' ', i * 4)); + sb.Append(' ', i * 4); sb.Append($"({step.InputContextType.Name} {nextContextName}) => {step.BehaviorType.Name}.Invoke({nextContextName}{(i + 1 < steps.Count ? "," : string.Empty)}"); } diff --git a/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj b/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj index e001cff3ad3..4adaa24c7e5 100644 --- a/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj +++ b/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj @@ -1,7 +1,7 @@ - net10.0 + net11.0 diff --git a/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj b/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj index 6e3d75cb5a0..051443c07bd 100644 --- a/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj +++ b/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj @@ -1,7 +1,7 @@  - net10.0 + net11.0 true ..\NServiceBusTests.snk diff --git a/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj b/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj index b5aa78e6bfc..08a71252eca 100644 --- a/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj +++ b/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj @@ -1,7 +1,7 @@  - net10.0 + net11.0 From 873540bf05997a37304323d59e757b15c95c699a Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 27 May 2026 07:56:18 +1000 Subject: [PATCH 2/5] Changes based on feedback --- .github/workflows/ci.yml | 5 ++--- global.json | 4 ++-- .../NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ded337e9c05..1334effc1d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,9 +31,8 @@ jobs: - name: Setup .NET SDK uses: actions/setup-dotnet@v5.2.0 with: - dotnet-version: | - 10.0.x - 11.0.x + global-json-file: global.json + dotnet-version: 10.0.x - name: Build run: dotnet build src --configuration Release - name: Upload packages diff --git a/global.json b/global.json index 1040849f738..77f7357e6c9 100644 --- a/global.json +++ b/global.json @@ -1,7 +1,7 @@ { "sdk": { - "version": "11.0.100-preview.4.26230.115", + "version": "11.0.0", "allowPrerelease": true, - "rollForward": "latestPatch" + "rollForward": "latestFeature" } } \ No newline at end of file diff --git a/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj b/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj index 9a4666780b2..e0618a5e0ae 100644 --- a/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj +++ b/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj @@ -1,7 +1,7 @@ - net10.0 + net11.0 From f0b94f64c1e7a6ab5973bd8f6ac321af1b79d52e Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 27 May 2026 08:25:22 +1000 Subject: [PATCH 3/5] Need to revert this to .net10 Otherwise the tests do not work. --- .../NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj b/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj index e0618a5e0ae..9a4666780b2 100644 --- a/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj +++ b/src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj @@ -1,7 +1,7 @@ - net11.0 + net10.0 From 03d8c73dbfd76b3d2ad0f41cc1351facb7547497 Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 27 May 2026 08:45:01 +1000 Subject: [PATCH 4/5] Exempt Roslyn5 analyzer tests from framework validation Addresses `CS1701` build warnings in the `NServiceBus.Core.Analyzer.Tests.Roslyn5` project. This specific analyzer test project requires a different test SDK version, leading to framework version conflicts during the .NET 11 upgrade. --- .repointegrity.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .repointegrity.yml diff --git a/.repointegrity.yml b/.repointegrity.yml new file mode 100644 index 00000000000..3f0754b3258 --- /dev/null +++ b/.repointegrity.yml @@ -0,0 +1,5 @@ +ignore: + # Roslyn analyzer tests need to be using the same version of the test SDK as the rest of the analyzers, otherwise we get build errors: + # , , , , , > + - test: ValidateProjectFrameworks + path: src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj \ No newline at end of file From 2319dcdefebb0140d8add9b4d9ab68043358c0d4 Mon Sep 17 00:00:00 2001 From: John Simons Date: Thu, 28 May 2026 10:17:25 +1000 Subject: [PATCH 5/5] Add multitarget --- .repointegrity.yml | 5 ----- .../NServiceBus.AcceptanceTests.csproj | 2 +- .../NServiceBus.ContainerTests.csproj | 2 +- src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj | 2 +- .../NServiceBus.Learning.AcceptanceTests.csproj | 2 +- .../NServiceBus.PersistenceTests.csproj | 2 +- .../NServiceBus.TransportTests.csproj | 2 +- 7 files changed, 6 insertions(+), 11 deletions(-) delete mode 100644 .repointegrity.yml diff --git a/.repointegrity.yml b/.repointegrity.yml deleted file mode 100644 index 3f0754b3258..00000000000 --- a/.repointegrity.yml +++ /dev/null @@ -1,5 +0,0 @@ -ignore: - # Roslyn analyzer tests need to be using the same version of the test SDK as the rest of the analyzers, otherwise we get build errors: - # , , , , , > - - test: ValidateProjectFrameworks - path: src/NServiceBus.Core.Analyzer.Tests.Roslyn5/NServiceBus.Core.Analyzer.Tests.Roslyn5.csproj \ No newline at end of file diff --git a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj index c94610c5779..b45d71cd597 100644 --- a/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj +++ b/src/NServiceBus.AcceptanceTests/NServiceBus.AcceptanceTests.csproj @@ -1,7 +1,7 @@ - net11.0 + net10.0;net11.0 diff --git a/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj b/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj index e7511583e3c..9d961384daa 100644 --- a/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj +++ b/src/NServiceBus.ContainerTests/NServiceBus.ContainerTests.csproj @@ -1,7 +1,7 @@ - net11.0 + net10.0;net11.0 true ..\NServiceBusTests.snk diff --git a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj index baf283dc5ff..dede6ba4ab2 100644 --- a/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj +++ b/src/NServiceBus.Core.Tests/NServiceBus.Core.Tests.csproj @@ -1,7 +1,7 @@ - net11.0 + net10.0;net11.0 true ..\NServiceBusTests.snk 13.0 diff --git a/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj b/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj index 4adaa24c7e5..b4d7cb12a24 100644 --- a/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj +++ b/src/NServiceBus.Learning.AcceptanceTests/NServiceBus.Learning.AcceptanceTests.csproj @@ -1,7 +1,7 @@ - net11.0 + net10.0;net11.0 diff --git a/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj b/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj index 051443c07bd..26a8c792032 100644 --- a/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj +++ b/src/NServiceBus.PersistenceTests/NServiceBus.PersistenceTests.csproj @@ -1,7 +1,7 @@  - net11.0 + net10.0;net11.0 true ..\NServiceBusTests.snk diff --git a/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj b/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj index 08a71252eca..e9ae67238f2 100644 --- a/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj +++ b/src/NServiceBus.TransportTests/NServiceBus.TransportTests.csproj @@ -1,7 +1,7 @@  - net11.0 + net10.0;net11.0