build: target frameworks in the plural, and say so on the front page - #18
Merged
Conversation
Two preparations for the day a second .NET has to be served, neither of which changes anything today. TargetFrameworks with a single value builds exactly what TargetFramework built: same net10.0 output path, same package layout, and the smoke test still consumes the .nupkg without noticing. What it buys is that adding a target becomes one character rather than a migration, at a moment when the rest of that change will already be the interesting part. The analyzer project follows because the two spellings cannot coexist — the plural wins wherever both are set, so a project overriding the singular would have been quietly retargeted off netstandard2.0, which is the whole reason an analyzer picks that target. The front page states compatibility as a table rather than a sentence, because a sentence has room for one answer and the answer is about to become two. It also writes down the rule the numbering follows, since that is the question such a table invites: the package version describes this library's own public surface, so a new .NET release adds a row rather than moving the major, and "take the latest version" remains the entire instruction — NuGet resolves the target framework for the consumer. In both languages, since a page's structure is compared against its translation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VZGwf9Cqea1f6sv2sEreQK
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.
Summary
Prepares the repository to serve a second .NET without opening a second major line. Nothing changes today: same output paths, same package layout, same supported framework.
Type of change
Changes
Directory.Build.props:TargetFramework→TargetFrameworks, value unchanged (net10.0). With a single value the plural builds exactly what the singular built — verified below — so the cost is nil and adding;net11.0later is one character instead of a migration.AspNetCore.EnumMemberNameBinding.Analyzers.csproj: converted too, and this one is not cosmetic. The two spellings cannot coexist:TargetFrameworkswins wherever both are set, so leaving the analyzer on the singular would have silently retargeted it fromnetstandard2.0tonet10.0— the one target it must keep, since that is what lets it load in every host. Confirmed still building tonetstandard2.0.README.mdanddocs/README.fr.md: the compatibility sentence becomes a table, plus a line stating the rule the numbering follows — the package version describes this library's public surface, so a new .NET adds a row rather than moving the major, and "take the latest version" stays the whole instruction because NuGet resolves the target framework. Both languages, sincea_translation_keeps_the_same_structurecompares table rows across a page and its translation.Nothing else needed converting:
tests/PackageSmokeTest/Directory.Build.propsis deliberately empty, so the smoke-test fixtures inherit none of this and keep their own singularTargetFramework.Testing
dotnet build -c Release— clean, warnings are errors here. Output paths confirmed unchanged:net10.0for the packages,netstandard2.0for the analyzer.dotnet test -c Release— 394 passed, 0 failed (292 / 61 / 41), including the translation-structure suite that guards the new table.tests/PackageSmokeTest/run.sh— run because packaging is exactly what this touches: it starts fromdotnet packand ends at an HTTP response, so it is what proves the plural did not disturb the.nupkga consumer restores. Passes.Public API
Documentation
docs/updatedCHANGELOG.mdanddocs/CHANGELOG.fr.mdboth updatedNo changelog entry: nothing shipped changes behaviour or surface. Say the word if you would rather the compatibility statement be recorded there too.
Related issues
Groundwork for the .NET 11 move:
Microsoft.AspNetCore.OpenApi11.0.0-preview already depends onMicrosoft.OpenApi3.x, so the day this repository addsnet11.0is also the day theignoreentry from #17 comes out.🤖 Generated with Claude Code
https://claude.ai/code/session_01VZGwf9Cqea1f6sv2sEreQK
Generated by Claude Code