diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 9478370a6b..d91a1f2eef 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "jetbrains.resharper.globaltools": { - "version": "2025.2.0", + "version": "2025.3.0-eap05", "commands": [ "jb" ], diff --git a/.github/workflows/Steeltoe.All.yml b/.github/workflows/Steeltoe.All.yml index a7567b0dc5..a6eb38507d 100644 --- a/.github/workflows/Steeltoe.All.yml +++ b/.github/workflows/Steeltoe.All.yml @@ -65,6 +65,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Turn off dev certificate (macOS only) if: ${{ matrix.os == 'macos-latest' }} # Setting DOTNET_GENERATE_ASPNET_CERTIFICATE to "false" makes it easier to determine which test failed on macOS when it tried to start a web server with https enabled. @@ -106,6 +112,12 @@ jobs: - name: Test (net9.0) (memory dumps) run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 --filter "${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }} + - name: Test (net10.0) + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }} + + - name: Test (net10.0) (memory dumps) + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 --filter "${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }}" ${{ env.COMMON_TEST_ARGS }} + - name: Upload crash/hang dumps (on failure) if: ${{ failure() }} uses: actions/upload-artifact@v4 diff --git a/.github/workflows/component-shared-workflow.yml b/.github/workflows/component-shared-workflow.yml index 17ca300bc0..c386c7c00f 100644 --- a/.github/workflows/component-shared-workflow.yml +++ b/.github/workflows/component-shared-workflow.yml @@ -62,6 +62,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Turn off dev certificate (macOS only) if: ${{ inputs.OS == 'macos' }} # Setting DOTNET_GENERATE_ASPNET_CERTIFICATE to "false" makes it easier to determine which test failed on macOS when it tried to start a web server with https enabled. @@ -99,6 +105,13 @@ jobs: if: ${{ inputs.component == 'Management' }} run: dotnet test ${{ env.SOLUTION_FILE }} --framework net9.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + - name: Test (net10.0) + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 ${{ env.SKIP_FILTER_NO_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + + - name: Test (net10.0) (memory dumps) + if: ${{ inputs.component == 'Management' }} + run: dotnet test ${{ env.SOLUTION_FILE }} --framework net10.0 ${{ env.SKIP_FILTER_WITH_MEMORY_DUMPS }} ${{ env.COMMON_TEST_ARGS }} + - name: Upload crash/hang dumps (on failure) if: ${{ failure() }} uses: actions/upload-artifact@v4 diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 186049309f..75cd0710c9 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -38,6 +38,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Git checkout uses: actions/checkout@v4 with: diff --git a/.github/workflows/scan-vulnerable-dependencies.yml b/.github/workflows/scan-vulnerable-dependencies.yml index aab25e06a7..e38055a056 100644 --- a/.github/workflows/scan-vulnerable-dependencies.yml +++ b/.github/workflows/scan-vulnerable-dependencies.yml @@ -34,6 +34,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Git checkout uses: actions/checkout@v4 with: diff --git a/.github/workflows/sonarcube.yml b/.github/workflows/sonarcube.yml index 34f5e0a5e7..e8668eac95 100644 --- a/.github/workflows/sonarcube.yml +++ b/.github/workflows/sonarcube.yml @@ -54,6 +54,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Install Sonar .NET Scanner run: dotnet tool install --global dotnet-sonarscanner @@ -90,6 +96,12 @@ jobs: - name: Test (net9.0) (memory dumps) run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category=MemoryDumps" --framework net9.0 ${{ env.SONAR_TEST_ARGS }} + - name: Test (net10.0) + run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category!=MemoryDumps" --framework net10.0 ${{ env.SONAR_TEST_ARGS }} + + - name: Test (net10.0) (memory dumps) + run: dotnet test ${{ env.SOLUTION_FILE }} --filter "Category=MemoryDumps" --framework net10.0 ${{ env.SONAR_TEST_ARGS }} + - name: End Sonar .NET scanner if: ${{ !cancelled() && steps.sonar_begin.outcome == 'success' }} env: diff --git a/.github/workflows/verify-code-style.yml b/.github/workflows/verify-code-style.yml index 07859d8a55..e049ac423a 100644 --- a/.github/workflows/verify-code-style.yml +++ b/.github/workflows/verify-code-style.yml @@ -33,6 +33,12 @@ jobs: 8.0.* 9.0.* + - name: Setup .NET 10 (preview) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.* + dotnet-quality: preview + - name: Git checkout uses: actions/checkout@v4 with: diff --git a/shared-test.props b/shared-test.props index 070739758d..0abf7cd070 100644 --- a/shared-test.props +++ b/shared-test.props @@ -4,6 +4,13 @@ $(NoWarn);S2094;S3717;SA1602;CA1062;CA1707;NU5104 + + + + + $(NoWarn);ASPDEPR004;ASPDEPR008 + + false diff --git a/shared.props b/shared.props index a6473a3318..7ca23ec482 100644 --- a/shared.props +++ b/shared.props @@ -12,6 +12,13 @@ false + + + preview + + $(NoWarn);CA1873 + + + $(NoWarn);NU1608 + + diff --git a/src/Discovery/test/Configuration.Test/Steeltoe.Discovery.Configuration.Test.csproj b/src/Discovery/test/Configuration.Test/Steeltoe.Discovery.Configuration.Test.csproj index a1d257dfa7..7d56666bcb 100644 --- a/src/Discovery/test/Configuration.Test/Steeltoe.Discovery.Configuration.Test.csproj +++ b/src/Discovery/test/Configuration.Test/Steeltoe.Discovery.Configuration.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Discovery/test/Consul.Test/Steeltoe.Discovery.Consul.Test.csproj b/src/Discovery/test/Consul.Test/Steeltoe.Discovery.Consul.Test.csproj index 0c13f5fb1c..9d04c2d612 100644 --- a/src/Discovery/test/Consul.Test/Steeltoe.Discovery.Consul.Test.csproj +++ b/src/Discovery/test/Consul.Test/Steeltoe.Discovery.Consul.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Discovery/test/Eureka.Test/Steeltoe.Discovery.Eureka.Test.csproj b/src/Discovery/test/Eureka.Test/Steeltoe.Discovery.Eureka.Test.csproj index f79a91c068..28d96ac0da 100644 --- a/src/Discovery/test/Eureka.Test/Steeltoe.Discovery.Eureka.Test.csproj +++ b/src/Discovery/test/Eureka.Test/Steeltoe.Discovery.Eureka.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs b/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs index 08f9e920a5..0f41aab316 100644 --- a/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs +++ b/src/Discovery/test/HttpClients.Test/LoadBalancers/RoundRobinLoadBalancerTest.cs @@ -246,8 +246,8 @@ private sealed class TestServiceInstance(Uri uri) : IServiceInstance public int Port => throw new NotImplementedException(); public bool IsSecure => throw new NotImplementedException(); public Uri Uri { get; } = uri; - public Uri? NonSecureUri => throw new NotImplementedException(); - public Uri? SecureUri => throw new NotImplementedException(); + public Uri NonSecureUri => throw new NotImplementedException(); + public Uri SecureUri => throw new NotImplementedException(); public IReadOnlyDictionary Metadata => throw new NotImplementedException(); } diff --git a/src/Discovery/test/HttpClients.Test/Steeltoe.Discovery.HttpClients.Test.csproj b/src/Discovery/test/HttpClients.Test/Steeltoe.Discovery.HttpClients.Test.csproj index 9a42b744de..e9458c6127 100644 --- a/src/Discovery/test/HttpClients.Test/Steeltoe.Discovery.HttpClients.Test.csproj +++ b/src/Discovery/test/HttpClients.Test/Steeltoe.Discovery.HttpClients.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Logging/test/DynamicConsole.Test/DynamicConsoleLoggerProviderTest.cs b/src/Logging/test/DynamicConsole.Test/DynamicConsoleLoggerProviderTest.cs index 5c17d14573..d48ca207d7 100644 --- a/src/Logging/test/DynamicConsole.Test/DynamicConsoleLoggerProviderTest.cs +++ b/src/Logging/test/DynamicConsole.Test/DynamicConsoleLoggerProviderTest.cs @@ -482,6 +482,29 @@ public async Task CanUseJsonFormatterWithScopes() await _consoleOutput.WaitForFlushAsync(TestContext.Current.CancellationToken); string logOutput = _consoleOutput.ToString(); +#if NET10_0_OR_GREATER + logOutput.Should().Be(""" + { + "EventId": 0, + "LogLevel": "Information", + "Category": "Fully.Qualified.Type", + "Message": "Processing of { RequestUrl = https://www.example.com, UserAgent = Steeltoe } started.", + "State": { + "@IncomingRequest": "{ RequestUrl = https://www.example.com, UserAgent = Steeltoe }", + "{OriginalFormat}": "Processing of {@IncomingRequest} started." + }, + "Scopes": [ + "OuterScope", + { + "Message": "InnerScope=InnerScopeValue", + "InnerScopeKey": "InnerScopeValue", + "{OriginalFormat}": "InnerScope={InnerScopeKey}" + } + ] + } + + """); +#else logOutput.Should().Be(""" { "EventId": 0, @@ -504,6 +527,7 @@ public async Task CanUseJsonFormatterWithScopes() } """); +#endif } [Fact] diff --git a/src/Logging/test/DynamicConsole.Test/Steeltoe.Logging.DynamicConsole.Test.csproj b/src/Logging/test/DynamicConsole.Test/Steeltoe.Logging.DynamicConsole.Test.csproj index 3a3430b390..ec171ac8c0 100644 --- a/src/Logging/test/DynamicConsole.Test/Steeltoe.Logging.DynamicConsole.Test.csproj +++ b/src/Logging/test/DynamicConsole.Test/Steeltoe.Logging.DynamicConsole.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Logging/test/DynamicSerilog.Test/Steeltoe.Logging.DynamicSerilog.Test.csproj b/src/Logging/test/DynamicSerilog.Test/Steeltoe.Logging.DynamicSerilog.Test.csproj index 9120fbd62a..0620235176 100644 --- a/src/Logging/test/DynamicSerilog.Test/Steeltoe.Logging.DynamicSerilog.Test.csproj +++ b/src/Logging/test/DynamicSerilog.Test/Steeltoe.Logging.DynamicSerilog.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs index 70f810c77f..39c995b7a9 100644 --- a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs +++ b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs @@ -167,7 +167,7 @@ private static IEnumerable FromActuatorEndpoint(RouteEndpoint en if (endpointOptions != null) { string displayName = endpoint.DisplayName ?? string.Empty; - MethodInfo handlerMethod = typeof(EndpointMiddleware<,>).GetMethod(nameof(EndpointMiddleware.InvokeAsync))!; + MethodInfo handlerMethod = typeof(EndpointMiddleware<,>).GetMethod(nameof(EndpointMiddleware<,>.InvokeAsync))!; var metadataProvider = endpoint.Metadata.GetMetadata()!; foreach (string httpMethod in endpointOptions.GetSafeAllowedVerbs()) diff --git a/src/Management/test/Endpoint.Test/Steeltoe.Management.Endpoint.Test.csproj b/src/Management/test/Endpoint.Test/Steeltoe.Management.Endpoint.Test.csproj index afaade1a7f..99a87cce8c 100644 --- a/src/Management/test/Endpoint.Test/Steeltoe.Management.Endpoint.Test.csproj +++ b/src/Management/test/Endpoint.Test/Steeltoe.Management.Endpoint.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Management/test/Prometheus.Test/Steeltoe.Management.Prometheus.Test.csproj b/src/Management/test/Prometheus.Test/Steeltoe.Management.Prometheus.Test.csproj index 95444f1e2c..484afb7186 100644 --- a/src/Management/test/Prometheus.Test/Steeltoe.Management.Prometheus.Test.csproj +++ b/src/Management/test/Prometheus.Test/Steeltoe.Management.Prometheus.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Management/test/RazorPagesTestWebApp/Steeltoe.Management.Endpoint.RazorPagesTestWebApp.csproj b/src/Management/test/RazorPagesTestWebApp/Steeltoe.Management.Endpoint.RazorPagesTestWebApp.csproj index 260873cc43..bfe64a947a 100644 --- a/src/Management/test/RazorPagesTestWebApp/Steeltoe.Management.Endpoint.RazorPagesTestWebApp.csproj +++ b/src/Management/test/RazorPagesTestWebApp/Steeltoe.Management.Endpoint.RazorPagesTestWebApp.csproj @@ -1,6 +1,6 @@  - net9.0;net8.0 + net10.0;net9.0;net8.0 false diff --git a/src/Management/test/Tasks.Test/Steeltoe.Management.Tasks.Test.csproj b/src/Management/test/Tasks.Test/Steeltoe.Management.Tasks.Test.csproj index dc3b1e985f..c8c75a12ee 100644 --- a/src/Management/test/Tasks.Test/Steeltoe.Management.Tasks.Test.csproj +++ b/src/Management/test/Tasks.Test/Steeltoe.Management.Tasks.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Management/test/Tracing.Test/Steeltoe.Management.Tracing.Test.csproj b/src/Management/test/Tracing.Test/Steeltoe.Management.Tracing.Test.csproj index 5e73996d4e..c28991c23d 100644 --- a/src/Management/test/Tracing.Test/Steeltoe.Management.Tracing.Test.csproj +++ b/src/Management/test/Tracing.Test/Steeltoe.Management.Tracing.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Security/test/Authentication.JwtBearer.Test/Steeltoe.Security.Authentication.JwtBearer.Test.csproj b/src/Security/test/Authentication.JwtBearer.Test/Steeltoe.Security.Authentication.JwtBearer.Test.csproj index d738e78d77..abdce38f96 100644 --- a/src/Security/test/Authentication.JwtBearer.Test/Steeltoe.Security.Authentication.JwtBearer.Test.csproj +++ b/src/Security/test/Authentication.JwtBearer.Test/Steeltoe.Security.Authentication.JwtBearer.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Security/test/Authentication.OpenIdConnect.Test/Steeltoe.Security.Authentication.OpenIdConnect.Test.csproj b/src/Security/test/Authentication.OpenIdConnect.Test/Steeltoe.Security.Authentication.OpenIdConnect.Test.csproj index 4273872dc9..7a11ec9e00 100644 --- a/src/Security/test/Authentication.OpenIdConnect.Test/Steeltoe.Security.Authentication.OpenIdConnect.Test.csproj +++ b/src/Security/test/Authentication.OpenIdConnect.Test/Steeltoe.Security.Authentication.OpenIdConnect.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Security/test/Authorization.Certificate.Test/Steeltoe.Security.Authorization.Certificate.Test.csproj b/src/Security/test/Authorization.Certificate.Test/Steeltoe.Security.Authorization.Certificate.Test.csproj index c06e4381d5..9235a977d6 100644 --- a/src/Security/test/Authorization.Certificate.Test/Steeltoe.Security.Authorization.Certificate.Test.csproj +++ b/src/Security/test/Authorization.Certificate.Test/Steeltoe.Security.Authorization.Certificate.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj b/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj index 71284f6de5..39e575c9a1 100644 --- a/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj +++ b/src/Security/test/DataProtection.Redis.Test/Steeltoe.Security.DataProtection.Redis.Test.csproj @@ -1,6 +1,6 @@ - net9.0;net8.0 + net10.0;net9.0;net8.0 diff --git a/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj b/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj index b3b0ca4194..37a1ae20ad 100644 --- a/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj +++ b/src/Tools/test/ConfigurationSchemaGenerator.Tests/ConfigurationSchemaGenerator.Tests.csproj @@ -1,6 +1,6 @@ - + - net9.0;net8.0 + net10.0;net9.0;net8.0 false enable true @@ -24,7 +24,8 @@ - + + diff --git a/versions.props b/versions.props index a11c13fea6..3ae717c330 100644 --- a/versions.props +++ b/versions.props @@ -33,10 +33,20 @@ 8.0.* + $(EntityFrameworkCoreTestVersion) + $(EntityFrameworkCoreTestVersion) - 9.0.*-* + 9.0.* + $(EntityFrameworkCoreTestVersion) + $(EntityFrameworkCoreTestVersion) + + + + 10.0.*-* + 9.0.* + 9.0.* @@ -88,4 +98,15 @@ 9.0.* + + + + + 10.0.*-* + +