From 0869f0b40817eb781827ade37e99d1679282a277 Mon Sep 17 00:00:00 2001 From: Peter Nylander Date: Wed, 7 Jan 2026 20:25:04 +0100 Subject: [PATCH 1/2] Upgrade samples to .NET 10 and latest package versions Updated all sample projects to target .NET 10.0. Upgraded NuGet dependencies to latest versions, including Microsoft.AspNetCore.OpenApi, Scalar.AspNetCore, Scrutor, and Microsoft.Extensions.DependencyInjection. Removed Microsoft.OpenApi where no longer needed. Refactored endpoint mapping in SampleModule1.cs and WeatherModule.cs to remove .WithOpenApi(), aligning with .NET 10 OpenAPI changes. No functional changes to sample logic. --- samples/AzureSample/AzureSample.csproj | 6 +++--- .../AzureServiceBusMessagingSample.csproj | 5 ++--- .../ConsoleLoggingFormatterSample.csproj | 2 +- .../FeatureModulesSample.Module1.csproj | 5 ++--- samples/FeatureModulesSample.Module1/SampleModule1.cs | 1 - samples/FeatureModulesSample/FeatureModulesSample.csproj | 7 +++---- samples/FeatureModulesSample/WeatherModule.cs | 3 +-- samples/HandlersSample/HandlersSample.csproj | 4 ++-- samples/MediatorSample/MediatorSample.csproj | 4 ++-- samples/MessagingSample/MessagingSample.csproj | 5 ++--- samples/PipelineSample/PipelineSample.csproj | 4 ++-- samples/SlackMessageBuilder/SlackMessageBuilder.csproj | 2 +- 12 files changed, 21 insertions(+), 27 deletions(-) diff --git a/samples/AzureSample/AzureSample.csproj b/samples/AzureSample/AzureSample.csproj index 3abbf72..05d92d9 100644 --- a/samples/AzureSample/AzureSample.csproj +++ b/samples/AzureSample/AzureSample.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable Infinity.Toolkit @@ -9,8 +9,8 @@ - - + + diff --git a/samples/AzureServiceBusMessagingSample/AzureServiceBusMessagingSample.csproj b/samples/AzureServiceBusMessagingSample/AzureServiceBusMessagingSample.csproj index 30b168d..fd2a894 100644 --- a/samples/AzureServiceBusMessagingSample/AzureServiceBusMessagingSample.csproj +++ b/samples/AzureServiceBusMessagingSample/AzureServiceBusMessagingSample.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable enable false @@ -9,8 +9,7 @@ - - + diff --git a/samples/ConsoleLoggingFormatterSample/ConsoleLoggingFormatterSample.csproj b/samples/ConsoleLoggingFormatterSample/ConsoleLoggingFormatterSample.csproj index 8fd88de..30a91b5 100644 --- a/samples/ConsoleLoggingFormatterSample/ConsoleLoggingFormatterSample.csproj +++ b/samples/ConsoleLoggingFormatterSample/ConsoleLoggingFormatterSample.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 enable enable false diff --git a/samples/FeatureModulesSample.Module1/FeatureModulesSample.Module1.csproj b/samples/FeatureModulesSample.Module1/FeatureModulesSample.Module1.csproj index dbb5777..e201669 100644 --- a/samples/FeatureModulesSample.Module1/FeatureModulesSample.Module1.csproj +++ b/samples/FeatureModulesSample.Module1/FeatureModulesSample.Module1.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable enable false @@ -13,8 +13,7 @@ - - + diff --git a/samples/FeatureModulesSample.Module1/SampleModule1.cs b/samples/FeatureModulesSample.Module1/SampleModule1.cs index c8172bf..8ae7cda 100644 --- a/samples/FeatureModulesSample.Module1/SampleModule1.cs +++ b/samples/FeatureModulesSample.Module1/SampleModule1.cs @@ -16,7 +16,6 @@ public class SampleModule1 : WebFeatureModule public override void MapEndpoints(WebApplication app) { var group = app.MapGroup("/info") - .WithOpenApi() .WithTags("Info"); group.MapGet("/systeminfo", GetSystemInfo) diff --git a/samples/FeatureModulesSample/FeatureModulesSample.csproj b/samples/FeatureModulesSample/FeatureModulesSample.csproj index 3625f5e..bd7bacd 100644 --- a/samples/FeatureModulesSample/FeatureModulesSample.csproj +++ b/samples/FeatureModulesSample/FeatureModulesSample.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable enable false @@ -9,9 +9,8 @@ - - - + + diff --git a/samples/FeatureModulesSample/WeatherModule.cs b/samples/FeatureModulesSample/WeatherModule.cs index 88f33ca..9d7e8cb 100644 --- a/samples/FeatureModulesSample/WeatherModule.cs +++ b/samples/FeatureModulesSample/WeatherModule.cs @@ -26,8 +26,7 @@ public override void MapEndpoints(WebApplication builder) return forecast; }) - .WithName("GetWeatherForecast") - .WithOpenApi(); + .WithName("GetWeatherForecast"); } } diff --git a/samples/HandlersSample/HandlersSample.csproj b/samples/HandlersSample/HandlersSample.csproj index 045d5d5..fdf0b29 100644 --- a/samples/HandlersSample/HandlersSample.csproj +++ b/samples/HandlersSample/HandlersSample.csproj @@ -1,14 +1,14 @@ - net9.0 + net10.0 enable enable false - + diff --git a/samples/MediatorSample/MediatorSample.csproj b/samples/MediatorSample/MediatorSample.csproj index cc5f3d8..7e5aa1e 100644 --- a/samples/MediatorSample/MediatorSample.csproj +++ b/samples/MediatorSample/MediatorSample.csproj @@ -2,14 +2,14 @@ Exe - net9.0 + net10.0 enable enable false - + diff --git a/samples/MessagingSample/MessagingSample.csproj b/samples/MessagingSample/MessagingSample.csproj index 446bec9..27f870f 100644 --- a/samples/MessagingSample/MessagingSample.csproj +++ b/samples/MessagingSample/MessagingSample.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable false @@ -9,8 +9,7 @@ - - + diff --git a/samples/PipelineSample/PipelineSample.csproj b/samples/PipelineSample/PipelineSample.csproj index f21be1d..85081c8 100644 --- a/samples/PipelineSample/PipelineSample.csproj +++ b/samples/PipelineSample/PipelineSample.csproj @@ -2,14 +2,14 @@ Exe - net9.0 + net10.0 enable enable false - + diff --git a/samples/SlackMessageBuilder/SlackMessageBuilder.csproj b/samples/SlackMessageBuilder/SlackMessageBuilder.csproj index abb63c1..1129cb1 100644 --- a/samples/SlackMessageBuilder/SlackMessageBuilder.csproj +++ b/samples/SlackMessageBuilder/SlackMessageBuilder.csproj @@ -2,7 +2,7 @@ Exe - net9.0 + net10.0 enable enable false From f4c388cd87ca90dfdc9f32ff62b9c36b67f9a05c Mon Sep 17 00:00:00 2001 From: Peter Nylander Date: Wed, 7 Jan 2026 20:27:29 +0100 Subject: [PATCH 2/2] Update to .NET 10.0, modernize dependencies and OpenAPI All projects now target .NET 10.0 exclusively, dropping support for earlier versions. NuGet dependencies are upgraded to latest major releases, including Microsoft.AspNetCore, EntityFrameworkCore, OpenTelemetry, Scrutor, and others. Project version numbers are incremented. SQL Server test containers now use the 2025 image. OpenAPI document transformers are refactored for improved standards compliance and maintainability. Minor code cleanups and test package updates are included. These changes improve compatibility, security, and performance across the toolkit. --- .../Infinity.Toolkit.AspNetCore.csproj | 6 ++-- .../Infinity.Toolkit.Azure.csproj | 8 ++--- .../Infinity.Toolkit.EntityFramework.csproj | 6 ++-- .../Infinity.Toolkit.Experimental.csproj | 8 ++--- .../Infinity.Toolkit.FeatureModules.csproj | 6 ++-- .../Infinity.Toolkit.IntegrationTests.csproj | 14 ++++----- .../SqlServerTestContainerFixture.cs | 3 +- .../Infinity.Toolkit.LogFormatter.csproj | 10 +++---- ...y.Toolkit.Messaging.AzureServiceBus.csproj | 6 ++-- .../Infinity.Toolkit.Messaging.csproj | 26 ++++++++-------- ...ritySchemeDefinitionDocumentTransformer.cs | 11 +++---- .../Infinity.Toolkit.OpenApi.csproj | 9 +++--- ...ritySchemeDefinitionDocumentTransformer.cs | 30 +++++++++---------- .../Infinity.Toolkit.Slack.csproj | 4 +-- .../Infinity.Toolkit.TestUtils.csproj | 20 ++++++------- src/Infinity.Toolkit/Infinity.Toolkit.csproj | 12 ++++---- .../Infinity.Toolkit.Tests.csproj | 4 +-- 17 files changed, 89 insertions(+), 94 deletions(-) diff --git a/src/Infinity.Toolkit.AspNetCore/Infinity.Toolkit.AspNetCore.csproj b/src/Infinity.Toolkit.AspNetCore/Infinity.Toolkit.AspNetCore.csproj index 28fe781..11d677c 100644 --- a/src/Infinity.Toolkit.AspNetCore/Infinity.Toolkit.AspNetCore.csproj +++ b/src/Infinity.Toolkit.AspNetCore/Infinity.Toolkit.AspNetCore.csproj @@ -1,11 +1,11 @@  - net10.0;net9.0 + net10.0 enable enable Infinity.Toolkit.AspNetCore - 1.2.0 + 1.3.0 @@ -17,7 +17,7 @@ - + diff --git a/src/Infinity.Toolkit.Azure/Infinity.Toolkit.Azure.csproj b/src/Infinity.Toolkit.Azure/Infinity.Toolkit.Azure.csproj index bb52831..f398bba 100644 --- a/src/Infinity.Toolkit.Azure/Infinity.Toolkit.Azure.csproj +++ b/src/Infinity.Toolkit.Azure/Infinity.Toolkit.Azure.csproj @@ -1,11 +1,11 @@  - net10.0;net9.0 + net10.0 enable enable Infinity.Toolkit.Azure - 1.0.2 + 1.1.0 @@ -14,9 +14,9 @@ - + - + diff --git a/src/Infinity.Toolkit.EntityFramework/Infinity.Toolkit.EntityFramework.csproj b/src/Infinity.Toolkit.EntityFramework/Infinity.Toolkit.EntityFramework.csproj index 3a704a6..1d1dc46 100644 --- a/src/Infinity.Toolkit.EntityFramework/Infinity.Toolkit.EntityFramework.csproj +++ b/src/Infinity.Toolkit.EntityFramework/Infinity.Toolkit.EntityFramework.csproj @@ -1,11 +1,11 @@  - net9.0 + net10.0 enable enable Infinity.Toolkit.EntityFramework - 1.0.1 + 1.0.2 false @@ -14,7 +14,7 @@ - + diff --git a/src/Infinity.Toolkit.Experimental/Infinity.Toolkit.Experimental.csproj b/src/Infinity.Toolkit.Experimental/Infinity.Toolkit.Experimental.csproj index a5322ce..8d08594 100644 --- a/src/Infinity.Toolkit.Experimental/Infinity.Toolkit.Experimental.csproj +++ b/src/Infinity.Toolkit.Experimental/Infinity.Toolkit.Experimental.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable enable Infinity.Toolkit.Experimental @@ -18,9 +18,9 @@ - - - + + + diff --git a/src/Infinity.Toolkit.FeatureModules/Infinity.Toolkit.FeatureModules.csproj b/src/Infinity.Toolkit.FeatureModules/Infinity.Toolkit.FeatureModules.csproj index b7f6fc9..27f3276 100644 --- a/src/Infinity.Toolkit.FeatureModules/Infinity.Toolkit.FeatureModules.csproj +++ b/src/Infinity.Toolkit.FeatureModules/Infinity.Toolkit.FeatureModules.csproj @@ -1,10 +1,10 @@  - net10.0;net9.0;net8.0 + net10.0 enable enable - 1.4.0 + 1.5.0 Infinity.Toolkit.FeatureModules Infinity Toolkit Feature Modules let's you automatically register dependencies and endpoints in modules which simplifies development when you are working with vertical feature slices. FeatureModules;VerticalSliceArchitecture;ModularMonoliths;MinimalApis @@ -19,7 +19,7 @@ - + diff --git a/src/Infinity.Toolkit.IntegrationTests/Infinity.Toolkit.IntegrationTests.csproj b/src/Infinity.Toolkit.IntegrationTests/Infinity.Toolkit.IntegrationTests.csproj index e8641d5..2bc62f7 100644 --- a/src/Infinity.Toolkit.IntegrationTests/Infinity.Toolkit.IntegrationTests.csproj +++ b/src/Infinity.Toolkit.IntegrationTests/Infinity.Toolkit.IntegrationTests.csproj @@ -1,20 +1,20 @@  - net10.0;net9.0 + net10.0 enable enable Infinity.Toolkit.IntegrationTests - 1.1.0 + 1.2.1 false - - - - - + + + + + diff --git a/src/Infinity.Toolkit.IntegrationTests/SqlServerTestContainerFixture.cs b/src/Infinity.Toolkit.IntegrationTests/SqlServerTestContainerFixture.cs index a4f3e08..c7b60f4 100644 --- a/src/Infinity.Toolkit.IntegrationTests/SqlServerTestContainerFixture.cs +++ b/src/Infinity.Toolkit.IntegrationTests/SqlServerTestContainerFixture.cs @@ -15,8 +15,7 @@ public sealed class SqlServerTestContainerFixture : WebApplicationF { public IConfiguration Configuration { get; private set; } - private readonly MsSqlContainer msSqlContainer = new MsSqlBuilder() - .WithImage("mcr.microsoft.com/mssql/server:2022-latest") + private readonly MsSqlContainer msSqlContainer = new MsSqlBuilder("mcr.microsoft.com/mssql/server:2025-latest") .Build(); public override async ValueTask DisposeAsync() diff --git a/src/Infinity.Toolkit.LogFormatter/Infinity.Toolkit.LogFormatter.csproj b/src/Infinity.Toolkit.LogFormatter/Infinity.Toolkit.LogFormatter.csproj index 8ec6412..707b29f 100644 --- a/src/Infinity.Toolkit.LogFormatter/Infinity.Toolkit.LogFormatter.csproj +++ b/src/Infinity.Toolkit.LogFormatter/Infinity.Toolkit.LogFormatter.csproj @@ -1,10 +1,10 @@  - net10.0;net9.0;net8.0 + net10.0 enable enable - 1.1.0 + 1.2.0 Infinity.Toolkit.LogFormatter A logging formatter that formats log messages with a Visual Studio Code inspired theme and Serilog like formatting. Logging formatter @@ -15,8 +15,8 @@ - - + + - + diff --git a/src/Infinity.Toolkit.Messaging.AzureServiceBus/Infinity.Toolkit.Messaging.AzureServiceBus.csproj b/src/Infinity.Toolkit.Messaging.AzureServiceBus/Infinity.Toolkit.Messaging.AzureServiceBus.csproj index 2c36ee3..f638d7b 100644 --- a/src/Infinity.Toolkit.Messaging.AzureServiceBus/Infinity.Toolkit.Messaging.AzureServiceBus.csproj +++ b/src/Infinity.Toolkit.Messaging.AzureServiceBus/Infinity.Toolkit.Messaging.AzureServiceBus.csproj @@ -1,10 +1,10 @@  - net10.0;net9.0 + net10.0 enable enable - 1.1.0 + 1.2.0 Azure Service Bus Integration for Infinity.Toolkit.Messaging. Infinity.Toolkit.Messaging.AzureServiceBus @@ -18,7 +18,7 @@ - + diff --git a/src/Infinity.Toolkit.Messaging/Infinity.Toolkit.Messaging.csproj b/src/Infinity.Toolkit.Messaging/Infinity.Toolkit.Messaging.csproj index 8301f35..603d2ad 100644 --- a/src/Infinity.Toolkit.Messaging/Infinity.Toolkit.Messaging.csproj +++ b/src/Infinity.Toolkit.Messaging/Infinity.Toolkit.Messaging.csproj @@ -1,9 +1,9 @@  - net10.0;net9.0 + net10.0 Infinity.Toolkit.Messaging - 1.1.0 + 1.2.0 @@ -16,17 +16,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/Infinity.Toolkit.OpenApi/BearerSecuritySchemeDefinitionDocumentTransformer.cs b/src/Infinity.Toolkit.OpenApi/BearerSecuritySchemeDefinitionDocumentTransformer.cs index a0be33e..f423d74 100644 --- a/src/Infinity.Toolkit.OpenApi/BearerSecuritySchemeDefinitionDocumentTransformer.cs +++ b/src/Infinity.Toolkit.OpenApi/BearerSecuritySchemeDefinitionDocumentTransformer.cs @@ -1,7 +1,5 @@ -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.AspNetCore.OpenApi; +using Microsoft.AspNetCore.OpenApi; using Microsoft.OpenApi; -using Microsoft.OpenApi.Models; namespace Infinity.Toolkit.OpenApi; @@ -15,13 +13,12 @@ public Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerC var securityScheme = new OpenApiSecurityScheme { Type = SecuritySchemeType.Http, - Name = JwtBearerDefaults.AuthenticationScheme, - Scheme = JwtBearerDefaults.AuthenticationScheme, - Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = JwtBearerDefaults.AuthenticationScheme } + Name = "bearer", + Scheme = "bearer", }; document.Components ??= new(); - document.Components.SecuritySchemes.Add(JwtBearerDefaults.AuthenticationScheme, securityScheme); + document.Components?.SecuritySchemes?.Add("bearer", securityScheme); return Task.CompletedTask; } } diff --git a/src/Infinity.Toolkit.OpenApi/Infinity.Toolkit.OpenApi.csproj b/src/Infinity.Toolkit.OpenApi/Infinity.Toolkit.OpenApi.csproj index 889fe2f..13f89c2 100644 --- a/src/Infinity.Toolkit.OpenApi/Infinity.Toolkit.OpenApi.csproj +++ b/src/Infinity.Toolkit.OpenApi/Infinity.Toolkit.OpenApi.csproj @@ -1,11 +1,11 @@  - net9.0 + net10.0 enable enable Infinity.Toolkit.OpenApi - 0.1.4 + 0.1.5 false @@ -14,9 +14,8 @@ - - - + + diff --git a/src/Infinity.Toolkit.OpenApi/OAuth2SecuritySchemeDefinitionDocumentTransformer.cs b/src/Infinity.Toolkit.OpenApi/OAuth2SecuritySchemeDefinitionDocumentTransformer.cs index f30b053..cdac90a 100644 --- a/src/Infinity.Toolkit.OpenApi/OAuth2SecuritySchemeDefinitionDocumentTransformer.cs +++ b/src/Infinity.Toolkit.OpenApi/OAuth2SecuritySchemeDefinitionDocumentTransformer.cs @@ -2,9 +2,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.OpenApi; -using Microsoft.OpenApi.Any; -using Microsoft.OpenApi.Interfaces; -using Microsoft.OpenApi.Models; namespace Infinity.Toolkit.OpenApi; @@ -26,9 +23,13 @@ public class OpenApiOAuth2Settings public string[]? ScopesArray => Scopes.Split(" ", StringSplitOptions.RemoveEmptyEntries); - public Uri AuthorizationUrl => new($"{Instance.TrimEnd('/')}/{TenantId}/oauth2/v2.0/authorize", UriKind.Absolute); + public IDictionary ScopesDictionary => ScopesArray?.ToDictionary(x => x, x => x) ?? []; - public Uri TokenUrl => new($"{Instance}/{TenantId}/oauth2/v2.0/token", UriKind.Absolute); + public string AuthorityUrl => $"{Instance}{TenantId}"; + + public string AuthorizationUrl => $"{AuthorityUrl}/oauth2/v2.0/authorize"; + + public string TokenUrl => $"{AuthorityUrl}/oauth2/v2.0/token"; } public static class AzureAdOAuth2SecuritySchemeDefinitionDocumentTransformerExtensions @@ -57,32 +58,31 @@ public sealed class OAuth2SecuritySchemeDefinitionDocumentTransformer(IOptions x, x => x), + AuthorizationUrl = new Uri(oauthOptions.AuthorizationUrl), + TokenUrl = new Uri(oauthOptions.TokenUrl), + Scopes = oauthOptions.ScopesDictionary, Extensions = new Dictionary { - ["x-usePkce"] = new OpenApiString("SHA-256") + ["x-usePkce"] = new JsonNodeExtension("SHA-256") } } } }; document.Components ??= new(); - document.Components.SecuritySchemes.Add(AuthenticationScheme, securityScheme); + document.AddComponent("oauth2", securityScheme); + return Task.CompletedTask; } } diff --git a/src/Infinity.Toolkit.Slack/Infinity.Toolkit.Slack.csproj b/src/Infinity.Toolkit.Slack/Infinity.Toolkit.Slack.csproj index c7dedda..a2d62db 100644 --- a/src/Infinity.Toolkit.Slack/Infinity.Toolkit.Slack.csproj +++ b/src/Infinity.Toolkit.Slack/Infinity.Toolkit.Slack.csproj @@ -1,10 +1,10 @@  - net9.0 + net10.0 enable enable - 0.1.0 + 0.2.0 Infinity.Toolkit.Slack Useful tools for creating Slack messages using block kit as well as helpers for authenticating and verifying requests from Slack. Slack;Toolkit; diff --git a/src/Infinity.Toolkit.TestUtils/Infinity.Toolkit.TestUtils.csproj b/src/Infinity.Toolkit.TestUtils/Infinity.Toolkit.TestUtils.csproj index a7c6f83..02cafdb 100644 --- a/src/Infinity.Toolkit.TestUtils/Infinity.Toolkit.TestUtils.csproj +++ b/src/Infinity.Toolkit.TestUtils/Infinity.Toolkit.TestUtils.csproj @@ -1,11 +1,11 @@  - net10.0;net9.0 + net10.0 enable enable Infinity.Toolkit.TestUtils - 1.0.0 + 1.1.0 false @@ -14,14 +14,14 @@ - - - - - - - - + + + + + + + + diff --git a/src/Infinity.Toolkit/Infinity.Toolkit.csproj b/src/Infinity.Toolkit/Infinity.Toolkit.csproj index 0ca1f59..a37365f 100644 --- a/src/Infinity.Toolkit/Infinity.Toolkit.csproj +++ b/src/Infinity.Toolkit/Infinity.Toolkit.csproj @@ -1,11 +1,11 @@  - net10.0;net9.0 + net10.0 enable enable Infinity.Toolkit - 1.3.0 + 1.4.0 @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/tests/Infinity.Toolkit.Tests/Infinity.Toolkit.Tests.csproj b/tests/Infinity.Toolkit.Tests/Infinity.Toolkit.Tests.csproj index e55709d..c52e6f4 100644 --- a/tests/Infinity.Toolkit.Tests/Infinity.Toolkit.Tests.csproj +++ b/tests/Infinity.Toolkit.Tests/Infinity.Toolkit.Tests.csproj @@ -11,10 +11,10 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive