Skip to content

Packaging: per-package READMEs and tags, validation against 3.1.0, net10.0 for Spring.Testing.Microsoft - #387

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

lahma merged 5 commits into
mainfrom
4x/packaging

Conversation

@lahma

@lahma lahma commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

Packaging follow-ups for 4.0.

Spring.Testing.Microsoft gets a net10.0 build next to netstandard2.0 and net472, like the other libraries.

  • MSTest.TestFramework 4.5.2 ships net462, net8.0, net9.0 and netstandard2.0 assets, so no conditions are needed.
  • Spring.Testing.Microsoft.Tests now runs against the net10.0 build.
  • BreakingChanges items 8 and 9 are updated.

Every package now has its own NuGet README and real tags.

  • Each of the 12 packages has a README.md, packed as the package readme. src/Directory.Build.props packs it only when the file exists. Each README covers:
    • what the package is;
    • the install line;
    • target frameworks;
    • one minimal snippet;
    • links, including BreakingChanges for 3.x users.
  • spring-reviewer checked every type, member, XML element, attribute and namespace URI in the snippets against the code.
  • PackageTags is now spring;springframework;ioc;di plus terms per package, in place of Library.
  • The Messaging and Nms descriptions are corrected.

The packages are now checked against 3.1.0 when they're packed.

  • EnablePackageValidation is on, with PackageValidationBaselineVersion 3.1.0. All 12 package ids exist at 3.1.0.
  • There are 145 suppressions, in src/Spring/*/CompatibilitySuppressions.xml. 3.1.0 shipped net462, which is not compatible with net472, so NuGet compares 3.1.0's net462 build with 4.0's netstandard2.0 build. Every entry comes from that pairing:
    • CP0008: _Exception/_Attribute interfaces that the netstandard2.0 build doesn't implement.
    • CP0001: types that are net472-only in both versions, such as CallContextStorage, ServiceDomain* and OpenSessionInViewModule.
    • PKV006: the dropped net462 build, and Spring.Testing.NUnit's dropped netstandard2.0 build (item 9).
  • The two netstandard2.0 builds are compared with no suppressions. Nothing was found that BreakingChanges.txt doesn't cover.
  • Spring.Messaging keeps validation off, with a comment. Its netstandard2.0 build (Experimental.System.Messaging) and its net472 build (System.Messaging) differ by design, as they did in 3.x.
  • Known gaps, documented in AGENTS.md:
    • The net472-only packages (Web, Mvc5, Web.Conversation, and Testing.NUnit's net472 build) get no comparison against 3.1.0, and no net472 build does.
    • A direct dotnet pack outside Fallout needs -p:AssemblyVersion=<major>.<minor>.0.0.
    • Both gaps close when the baseline moves to 4.0.0 after release.

Verification

🤖 Generated with Claude Code

https://claude.ai/code/session_01LGkLQuAuUjvRjrU1AcTsmk

lahma and others added 5 commits November 3, 2026 22:53
MSTest.TestFramework 4.5.2 ships net462, net8.0, net9.0 and netstandard2.0 assets, so net472 resolves net462 and net10.0 resolves net9.0. No source or csproj condition needed.

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>
Every project under src/Spring gets a README.md that is packed as the package readme: what it does, the install line, target frameworks, a minimal snippet (types, members, XML elements and namespace URIs checked against the code) and links. src/Directory.Build.props sets PackageReadmeFile and packs README.md only when the project has one.

The global PackageTags value "Library" becomes spring;springframework;ioc;di plus per-project terms. Descriptions of Spring.Messaging (MSMQ 3.0) and Spring.Messaging.Nms are brought up to date.

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>
EnablePackageValidation is on for the src projects, with PackageValidationBaselineVersion 3.1.0 (all twelve package ids exist at 3.1.0 on nuget.org). Each project's CompatibilitySuppressions.xml holds the accepted baseline differences, generated with ApiCompatGenerateSuppressionFile: the dropped net462 asset (PKV006 for the net472-only packages and Spring.Testing.NUnit, CP0001 and CP0008 where a 3.1.0 net462 consumer is now compared with the netstandard2.0 build).

Spring.Messaging turns validation off: its netstandard2.0 and net472 builds expose different message types (Experimental.System.Messaging vs System.Messaging), which package validation reports as errors between two TFMs of the same package. That predates 4.0 and is not suppressed.

AGENTS.md documents the package READMEs, the baseline and how to regenerate the suppression files.

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>
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>
AGENTS.md: tighten the package validation bullet, document that a direct dotnet pack needs -p:AssemblyVersion=<major>.<minor>.0.0 (CP0003 otherwise), and state the coverage gap (no baseline comparison for the net462-only packages and Spring.Testing.NUnit, no net472 build compared with 3.1.0).

READMEs: Spring.Web.Conversation.NHibernate5 now says Spring.Web is needed too and configures ConversationManagerNameList through HttpApplicationConfigurer; Spring.Data.NHibernate5 gains its usings and MsSql2012Dialect; Spring.Messaging gains its using; Spring.Data shows Microsoft.Data.SqlClient with the alias per framework.

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 f5ac618 into main Nov 3, 2026
3 checks passed
@lahma
lahma deleted the 4x/packaging branch November 3, 2026 21:00
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