From 63607398b76836bc815616076304b2067b843e14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Sep 2026 12:26:24 +0000 Subject: [PATCH 1/3] Bump the dotnet-dependencies group with 11 updates Bumps CsCheck from 4.8.0 to 4.9.1 Bumps Meziantou.Analyzer from 3.0.167 to 3.0.283 Bumps Microsoft.Bcl.AsyncInterfaces from 10.0.11 to 10.0.12 Bumps Microsoft.Data.SqlClient from 7.0.2 to 7.1.0 Bumps Microsoft.Extensions.Logging.Abstractions from 10.0.11 to 10.0.12 Bumps Microsoft.SourceLink.GitHub from 10.0.400 to 10.0.401 Bumps nuget-license from 4.0.17 to 4.0.18 Bumps Roslynator.Analyzers from 4.16.1 to 5.0.0 Bumps SonarAnalyzer.CSharp from 10.32.0.713 to 10.34.0.3385 Bumps Testcontainers.MsSql from 4.14.0 to 4.15.0 Bumps Xunit.SkippableFact from 1.5.61 to 1.5.85 --- updated-dependencies: - dependency-name: CsCheck dependency-version: 4.9.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-dependencies - dependency-name: Meziantou.Analyzer dependency-version: 3.0.283 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: Microsoft.Bcl.AsyncInterfaces dependency-version: 10.0.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: Microsoft.Data.SqlClient dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-dependencies - dependency-name: Microsoft.Extensions.Logging.Abstractions dependency-version: 10.0.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: Microsoft.SourceLink.GitHub dependency-version: 10.0.401 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: nuget-license dependency-version: 4.0.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: Roslynator.Analyzers dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: dotnet-dependencies - dependency-name: SonarAnalyzer.CSharp dependency-version: 10.34.0.3385 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-dependencies - dependency-name: Testcontainers.MsSql dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-dependencies - dependency-name: Testcontainers.MsSql dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-dependencies - dependency-name: Xunit.SkippableFact dependency-version: 1.5.85 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies - dependency-name: Xunit.SkippableFact dependency-version: 1.5.85 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-dependencies ... Signed-off-by: dependabot[bot] --- .config/dotnet-tools.json | 4 ++-- Directory.Build.props | 8 ++++---- .../Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads.csproj | 4 ++-- .../Wolfgang.Etl.SqlBulkCopy.csproj | 6 +++--- .../Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz.csproj | 2 +- .../Wolfgang.Etl.SqlBulkCopy.Tests.Integration.csproj | 4 ++-- .../Wolfgang.Etl.SqlBulkCopy.Tests.Unit.csproj | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index f0650276..76f5f96f 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -10,7 +10,7 @@ "rollForward": true }, "nuget-license": { - "version": "4.0.17", + "version": "4.0.18", "commands": [ "nuget-license" ], @@ -59,4 +59,4 @@ "rollForward": true } } -} +} \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 1990a67e..f61c25ab 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -42,7 +42,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -66,13 +66,13 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -128,7 +128,7 @@ - + all diff --git a/samples/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads.csproj b/samples/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads.csproj index a09d8ca8..c47ea309 100644 --- a/samples/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads.csproj +++ b/samples/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads/Wolfgang.Etl.SqlBulkCopy.ShadowWorkloads.csproj @@ -14,7 +14,7 @@ - + - + diff --git a/src/Wolfgang.Etl.SqlBulkCopy/Wolfgang.Etl.SqlBulkCopy.csproj b/src/Wolfgang.Etl.SqlBulkCopy/Wolfgang.Etl.SqlBulkCopy.csproj index a129d4cf..0ed4b0ae 100644 --- a/src/Wolfgang.Etl.SqlBulkCopy/Wolfgang.Etl.SqlBulkCopy.csproj +++ b/src/Wolfgang.Etl.SqlBulkCopy/Wolfgang.Etl.SqlBulkCopy.csproj @@ -47,9 +47,9 @@ - - - + + + diff --git a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz.csproj b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz.csproj index 6edcb260..99a89150 100644 --- a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz.csproj +++ b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz/Wolfgang.Etl.SqlBulkCopy.Tests.Fuzz.csproj @@ -27,7 +27,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Integration/Wolfgang.Etl.SqlBulkCopy.Tests.Integration.csproj b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Integration/Wolfgang.Etl.SqlBulkCopy.Tests.Integration.csproj index bcef15d9..07654736 100644 --- a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Integration/Wolfgang.Etl.SqlBulkCopy.Tests.Integration.csproj +++ b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Integration/Wolfgang.Etl.SqlBulkCopy.Tests.Integration.csproj @@ -21,7 +21,7 @@ all - + - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/Wolfgang.Etl.SqlBulkCopy.Tests.Unit.csproj b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/Wolfgang.Etl.SqlBulkCopy.Tests.Unit.csproj index 94a85086..80cb53c4 100644 --- a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/Wolfgang.Etl.SqlBulkCopy.Tests.Unit.csproj +++ b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/Wolfgang.Etl.SqlBulkCopy.Tests.Unit.csproj @@ -33,7 +33,7 @@ Microsoft.Data.SqlClient 6.x is not functional on Linux (SqlPerformanceCounters depends on Windows-only PerformanceCounter), so those tests are scoped to the Windows stages. --> - + From 1e7c4eea4a72a7ad6df424712a0929e568c26178 Mon Sep 17 00:00:00 2001 From: Chris Wolfgang <210299580+Chris-Wolfgang@users.noreply.github.com> Date: Wed, 23 Sep 2026 10:53:45 -0400 Subject: [PATCH 2/3] build(deps): bring GcProfileWorkload in line with the group bump Stage 1 fails restore on this PR: error NU1605: Warning As Error: Detected package downgrade: Microsoft.Data.SqlClient from 7.1.0 to 7.0.2 tools/GcProfileWorkload is not in the PR's file list. The group bump raised Microsoft.Data.SqlClient to 7.1.0 in src/, tests/ and samples/, but this project references the library by ProjectReference AND pins SqlClient 7.0.2 directly, so its direct reference is now lower than what it gets transitively. That is a downgrade, TreatWarningsAsErrors makes NU1605 an error, and restore fails for the whole build rather than just this project. The same file also raised the SSH.NET advisories - NU1903 for GHSA-q939-rpr3-3284 and GHSA-mggc-4xg6-vcxf - because Testcontainers pulls SSH.NET 2025.1.0 transitively and this is the one project that never received the forward pin its two siblings carry. So: SqlClient to 7.1.0, Testcontainers.MsSql to 4.15.0 to match the rest of the repository, and the SSH.NET 2026.0.0 security pin with the same rationale and the same removal condition as Tests.Integration and ShadowWorkloads. Verified locally rather than by inference: restoring this project before the change reproduces error NU1605 and NU1903 and exits 1; after it, restore is clean and exits 0. Note this commit ends Dependabot's management of this branch - it will not rebase or update the PR again, which is fine if it merges from here. Co-Authored-By: Claude Opus 5 --- .../GcProfileWorkload.csproj | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tools/GcProfileWorkload/GcProfileWorkload.csproj b/tools/GcProfileWorkload/GcProfileWorkload.csproj index 0ea04d73..e94b16b3 100644 --- a/tools/GcProfileWorkload/GcProfileWorkload.csproj +++ b/tools/GcProfileWorkload/GcProfileWorkload.csproj @@ -16,8 +16,23 @@ - - + + + + + From 26949116428ccc2b9f4bcb7c36d753f63fbaa7a3 Mon Sep 17 00:00:00 2001 From: Chris Wolfgang <210299580+Chris-Wolfgang@users.noreply.github.com> Date: Wed, 23 Sep 2026 11:04:50 -0400 Subject: [PATCH 3/3] test: let the SqlConnection guard skip on PlatformNotSupportedException too *** TEST-CODE CHANGE - flagged for review per the house rule. *** With restore fixed, Stage 1 got as far as running tests and 10 failed on the net5.0 leg with: System.PlatformNotSupportedException : Microsoft.Data.SqlClient is not supported on this platform. at Microsoft.Data.SqlClient.SqlConnection..ctor() Both test classes already have a guard whose stated purpose is exactly this - "the facts that need a real SqlConnection skip instead of fail there" - but it catches only TypeInitializationException, the SqlPerformanceCounters cctor failure. Microsoft.Data.SqlClient ships lib/ assets for net462, net8.0, net9.0 and netstandard2.0 only, so the net5.0-net7.0 legs bind netstandard2.0, whose members throw PlatformNotSupportedException outright. That escapes the catch, propagates out of the Lazy, and fails every test calling NewConnection(). The guard now treats it the same way, for the same reason: no real SqlConnection is available on that leg. This is NOT caused by the version bump. 7.0.2 and 7.1.0 ship identical target frameworks - verified against both packages in the local NuGet cache - so the net5.0 leg binds netstandard2.0 either way. The failures were latent and only became visible once the NU1605 downgrade stopped failing the build at restore. No assertion is weakened and nothing is suppressed: on every leg where SqlClient works (net8.0/9.0/10.0, and the .NET Framework legs) these tests run exactly as before. Verified locally on net10.0: 338 passed, 0 skipped. What I could NOT verify locally: the skip itself. The PlatformNotSupportedException only occurs on the Linux net5.0-net7.0 legs, and this machine is Windows, where SqlClient loads. CI is the real check. Co-Authored-By: Claude Opus 5 --- .../SqlBulkCopyLoaderOptionsRecordTests.cs | 9 +++++++++ .../SqlBulkCopyLoaderTests.cs | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderOptionsRecordTests.cs b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderOptionsRecordTests.cs index 3896ec08..47e2970e 100644 --- a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderOptionsRecordTests.cs +++ b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderOptionsRecordTests.cs @@ -37,6 +37,15 @@ private static bool IsSqlConnectionConstructible() { return false; } + catch (PlatformNotSupportedException) + { + // Microsoft.Data.SqlClient ships lib/ assets for net462, net8.0, net9.0 and + // netstandard2.0 only. The net5.0-net7.0 legs therefore bind the netstandard2.0 + // asset, whose members throw PlatformNotSupportedException outright rather than + // failing in the SqlPerformanceCounters cctor. Same situation as the catch above - + // no real SqlConnection is available - so it skips for the same reason. + return false; + } } private static SqlConnection NewConnection() diff --git a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderTests.cs b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderTests.cs index 272f3059..bcf52432 100644 --- a/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderTests.cs +++ b/tests/Wolfgang.Etl.SqlBulkCopy.Tests.Unit/SqlBulkCopyLoaderTests.cs @@ -34,6 +34,15 @@ private static bool IsSqlConnectionConstructible() { return false; } + catch (PlatformNotSupportedException) + { + // Microsoft.Data.SqlClient ships lib/ assets for net462, net8.0, net9.0 and + // netstandard2.0 only. The net5.0-net7.0 legs therefore bind the netstandard2.0 + // asset, whose members throw PlatformNotSupportedException outright rather than + // failing in the SqlPerformanceCounters cctor. Same situation as the catch above - + // no real SqlConnection is available - so it skips for the same reason. + return false; + } } private static void SkipUnlessSqlConnectionConstructible()