Skip to content

4.0 dependency upgrades and vulnerability fixes - #381

Merged
lahma merged 4 commits into
mainfrom
4x/dependencies
Nov 3, 2026
Merged

lahma merged 4 commits into
mainfrom
4x/dependencies

Conversation

@lahma

@lahma lahma commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

This PR clears every vulnerable package in the dependency graph and brings dependencies up to date for 4.0. Packages that consumers inherit stay on the agreed 8.0.x Microsoft floor: NuGet lifts them when an application references something newer, while higher floors would trigger downgrade errors in apps pinned to 8.x.

Vulnerabilities fixed

dotnet list package --vulnerable --include-transitive is now clean for every project in the solution and for the build project.

Packages consumers inherit

Package Change
Microsoft.Extensions.Logging.Abstractions 8.0.0 → 8.0.3
Microsoft.Bcl.HashCode 1.1.1 → 6.0.0
Microsoft.Win32.Registry 4.7.0 → 5.0.0, netstandard2.0 only
System.CodeDom 5.0.0 (deprecated) → 8.0.0; no longer referenced on .NET Framework
System.Configuration.ConfigurationManager no longer referenced on .NET Framework
NHibernate 5.6.0 → 5.7.1
Quartz 3.12.0 → 3.22.9
Microsoft.AspNet.Mvc / Microsoft.AspNet.WebApi.WebHost 5.2.7 → 5.3.0
Antlr3.Runtime removed from Spring.Aop; nothing used it
Experimental.System.Messaging.Signed dropped from Spring.Messaging's .NET Framework build, which always compiled against the framework's System.Messaging

TFM conditions use TargetFrameworkIdentifier, so they stay correct when the net10.0 library target arrives.

Quartz 3.22 marks DirtyFlagMap.Put and PutAll obsolete. Five Quartz3 files now use the indexer instead; the review compared it with the Quartz v3.22.9 source and found identical behaviour.

Test, example and build packages

  • FakeItEasy 9.0.1, BenchmarkDotNet 0.15.8, log4net 3.5.0, Apache.NMS.ActiveMQ 2.3.0, System.Resources.Extensions 10.0.14, System.Data.SqlClient 4.9.1 and System.Runtime.Serialization.Formatters 10.0.14.
  • The examples' logging packages stay on the 8.0 line, because the net472 web examples have no binding redirects for a 10.x closure.
  • Spring.Mvc5QuickStart suppresses NU1608, with a comment: its OData v3 package caps WebApi.Core below 5.3.0.
  • The Spring.Web.Tests web.config redirects and the Mvc5QuickStart redirects match the new assembly versions.

Notes

BreakingChanges.txt items 5–7 list the floors and the moved assembly versions, with the binding redirects .NET Framework applications need.

Verification

  • Clean build, with no NU1605 or NU1608 in the solution.
  • Core, Aop, Data, NHibernate5, Quartz3, Nms and Testing.* pass on net10.0 and net472. Web and Mvc5 pass on net472.
  • Pack succeeds, and the nuspec dependency groups were checked.
  • Spring.Messaging.Tests needs MSMQ and isn't in the default suite, so it wasn't run.
  • A separate review agent checked the assembly identities, the redirects and the Quartz behaviour.

Supersedes #379.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LGkLQuAuUjvRjrU1AcTsmk

lahma and others added 2 commits November 3, 2026 15:57
Shipped packages keep 8.0.x Microsoft floors: Logging.Abstractions 8.0.3,
Bcl.HashCode 6.0.0, Registry 5.0.0, CodeDom 8.0.0, NHibernate 5.7.1,
Quartz 3.22.9, Mvc/WebApi.WebHost 5.3.0. Spring.Core no longer references
ConfigurationManager, CodeDom and Registry on .NET Framework; Spring.Messaging
uses the framework System.Messaging there. Spring.Aop drops Antlr3.Runtime.

Test, example and build packages go to latest; the build project pins
System.Security.Cryptography.Pkcs/Xml 10.0.14. Quartz 3.22 obsoletes
DirtyFlagMap.Put/PutAll, so the Quartz3 integration uses the indexer.
The NUnitAspEx web.config binding redirects follow the new System.Memory,
System.Buffers and Unsafe assembly versions.

BreakingChanges.txt items 5-7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Marko Lahma <marko.lahma@gmail.com>
Microsoft.Extensions.Logging and Log4Net.AspNetCore are used only by
examples. They stay on the 8.0 line that matches Spring.Core's
Logging.Abstractions floor, because the net472 web examples have no
binding redirects for a 10.x closure.

Spring.Mvc5QuickStart's OData v3 package caps WebApi.Core below 5.3.0.
That example project now suppresses NU1608 and says why.

BreakingChanges items 5 and 6 now list the assembly versions that moved
and the redirects .NET Framework applications need. They no longer
describe the Messaging package drop as a type change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Marko Lahma <marko.lahma@gmail.com>
lahma and others added 2 commits November 3, 2026 16:04
The examples reference the built Spring assemblies by HintPath, so
NuGet doesn't see that Spring.Core needs Logging.Abstractions 8.0.3.
Microsoft.Extensions.Logging 8.0.1 alone resolves 8.0.2, and
CompileExamples failed with CS1705. With transitive pinning, the
examples get the same versions as the libraries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LGkLQuAuUjvRjrU1AcTsmk
Signed-off-by: Marko Lahma <marko.lahma@gmail.com>
OData 5.7.0 caps WebApi.Core below 5.3.0, and WebApi 5.3.0 needs
5.3.0, so restore failed with NU1107. A direct reference makes 5.3.0
win and leaves only the NU1608 warning the project already suppresses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LGkLQuAuUjvRjrU1AcTsmk
Signed-off-by: Marko Lahma <marko.lahma@gmail.com>
@lahma
lahma merged commit 1ee2062 into main Nov 3, 2026
3 checks passed
@lahma
lahma deleted the 4x/dependencies branch November 3, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant