Add .NET 10 support and security dependency floors for v0#1149
Open
plskbc wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0: additive .NET 10 support + security dependency floors (0.86)
Why
Applications stuck on the v0 line (v1 is a breaking rewrite) are now moving to .NET 10. The published 0.85.5 packages run on net10 via their netcoreapp3.1/netstandard2.0 assets, but two things block real-world upgrades:
EventFlow.Sqlpins the ecosystem to dbup-core 5.x.DbUpUpgradeLogimplements the dbup-core 5.xIUpgradeLog; dbup-core 6.x reshaped that interface, so any application that needs DbUp 6.x anywhere else in its dependency graph gets aTypeLoadException. No consumer-side override can fix this — it is a code-level pin.EventFlow.AspNetCoredrags the legacy ASP.NET Core 2.2/3.1 package tree into modern apps (restore warnings, security-audit noise), and several netstandard2.0 dependency graphs carry known-vulnerable transitives.What (design rule: strictly additive — no existing consumer changes)
Every pre-existing TFM keeps its dependency group byte-identical to 0.85.5 (verified by diffing packed nuspecs of all 16 packages against the published 0.85.5 nupkgs), with the sole exception of the explicitly listed security floors below. A new
net10.0TFM is added to five packages; only apps targeting net10.0+ that opt into 0.86 pick up the new assets.net10.0 TFM added (EventFlow, EventFlow.Sql, EventFlow.MsSql, EventFlow.AspNetCore, EventFlow.DependencyInjection)
EventFlow.Sql(net10.0): dbup-core 6.1.1, withDbUpUpgradeLogimplementing the 6.xIUpgradeLogbehind#if NET8_0_OR_GREATER(the old shape is preserved verbatim for all other TFMs)EventFlow.MsSql(net10.0): dbup-sqlserver 7.2.0, Microsoft.Data.SqlClient 6.1.4EventFlow.AspNetCore(net10.0):FrameworkReference Microsoft.AspNetCore.App+Microsoft.AspNetCore.Mvc.NewtonsoftJson 10.0.0— no legacy 2.2/3.1 packages in the net10 graph (same pattern the v1 branch uses)EventFlow.DependencyInjection(net10.0): Microsoft.Extensions.DependencyInjection 10.0.0#iffixes so the net10 build compiles the modern branches:(NETCOREAPP3_0 || NETCOREAPP3_1)→NETCOREAPP3_0_OR_GREATER(netcoreapp3.x output unchanged),NETSTANDARD2_0_OR_GREATER→… || NET5_0_OR_GREATERin EventFlow.MsSql (netstandard symbols are not defined on net TFMs),Assembly.CodeBase→Assembly.Locationon net5+ (SYSLIB0012)global.json(SDK 10.0.100, rollForward latestFeature — mirrors v1),NuGetAudit=false+RestoreEnablePackagePruning=falseinSource/Common.props(pruning would silently drop framework packages likeMicrosoft.CSharpfrom the existing netcoreapp3.x nuspec groups), workflows bumped to0.86.*and given a pinned Bake install step;develop-v0'srelease-v0.ymlsynced with the fix that currently lives only onrelease-v0(expect a trivial version-line conflict on the release merge)Security floors (modern graphs only; net452/netstandard1.6 graphs intentionally untouched)
Breaking (flagged in RELEASE_NOTES): consumers of
EventFlow.Hangfireusing Hangfire 1.6.x storage packages (e.g.Hangfire.SqlServer) must move them to 1.7.x together — 1.6.x storage packages pinHangfire.Coreexactly and fail restore with NU1107 otherwise. Hangfire 1.6→1.7 is forward-compatible for stored jobs per the official upgrade guide, and EventFlow.Hangfire uses none of the 1.7-changed APIs.Known residual: SharpCompress (GHSA-6c8g-7p36-r338, transitive of MongoDB.Driver) has no patched release yet; EventFlow never calls the affected archive-extraction path. Noted in RELEASE_NOTES to revisit when a fix ships.
Verification done
netcoreapp3.1;net10.0with the old TFM keeping its existing test-infra versions). Two new tests added: aDbUpUpgradeLogunit test covering bothIUpgradeLogshapes, and anMsSqlDatabaseMigratorintegration test exercising the DbUpUpgradeEngine/LogTopath end-to-end on both dbup major versions (that path previously had no direct coverage).Test runs (local, SDK 10.0.102; ~1,360 executions, 0 failures)
Integration services: SQL Server (LocalDB), Postgres 10, RabbitMQ 3, EventStore 4.1.3, Elasticsearch 6.8.3 (docker), MongoDB via Mongo2Go.
netcoreapp3.1legs ran via runtime roll-forward (no 3.1 runtime on the dev machine) — worth re-confirming on the v0 runner's real 3.1 runtime.DbUpUpgradeLogTests(5.x shape / 6.x shape)dotnet list package --vulnerable --include-transitive: every netstandard2.0/net462/net472/net10.0 graph of every shipped package is clean (except the documented SharpCompress residual)Notes for maintainers
0.37.51, the version the v1 pipeline uses)github.run_number(so not exactly 0.86.0)