Repository navigation
build: target net10.0 and net11.0 only - #20
Merged
Merged
Conversation
.NET 8 and 9 left support on 10 Nov 2026. The tool and tests now target net10.0;net11.0, and CI installs only the 10.0.x and 11.0.x SDKs. Docs and agent instructions name .NET 10 and 11. A machine with only .NET 8 or 9 can no longer install new releases. Release this as a minor bump (1.3.0). RollForward Major is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH
.NET 10 is the LTS baseline. global.json asks for SDK 10.0.100 and rolls forward to the latest installed major, so a machine with 10 and 11 builds with 11. The tool and tests target net10.0 always and add net11.0 when NETCoreSdkVersion is 11 or later, so SDK 10 alone still builds. CI installs both SDKs, so the package ships both targets. publish.yml now also runs when global.json changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH
The package targets depend on the SDK that built it. A "Check package targets" step after each Pack fails the run unless the nupkg holds tools/net10.0 and tools/net11.0. It matches bbx's step and also insists on exactly one package, since unzip -l reads a second path as a member name. global.json leaves the path filters again, so a build-setting change alone does not publish. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH
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.
What changed
src/Ytx/Ytx.csprojandtests/Ytx.Tests/Ytx.Tests.csprojalways targetnet10.0and addnet11.0when the SDK is 11 or later:global.json:{ "sdk": { "version": "10.0.100", "rollForward": "latestMajor", "allowPrerelease": false } }..github/workflows/publish.yml: bothsetup-dotnetsteps install10.0.xand11.0.xonly. They list explicit versions and do not useglobal-json-file, so the newglobal.jsondoes not reduce them to one SDK.global.jsonis not in the path filters on purpose, so a build-setting change alone does not publish..github/workflows/publish.yml: a "Check package targets" step after Pack in both thevalidateandpublishjobs, matching bbx. It fails the run unless the nupkg holdstools/net10.0/any/Ytx.dllandtools/net11.0/any/Ytx.dll. It also requires exactly one package innupkg/, becauseunzip -lreads a second path as a member name.codeql.ymlusesbuild-mode: noneand sets up no SDK, so it needed no change.README.md(new "SDK policy" section),AGENTS.mdand.github/copilot-instructions.mddescribe the SDK policy and name .NET 10 and 11 only.CHANGELOG.md: a Breaking entry under Unreleased.Why
John decided on 11 Nov 2026 that tools and tests follow supported .NET versions only. .NET 8 and 9 left support on 10 Nov 2026, so nothing targets them now.
SDK policy
.NET 10 is the LTS and the baseline.
latestMajorpicks 11 and both targets build.net10.0only.net10.0andnet11.0. A package packed on SDK 10 alone would holdnet10.0only. The new CI check fails the run in that case, so such a package cannot be published.<RollForward>Major</RollForward>is already in the csproj since e6f0b16. This PR does not add it again.Install compatibility
Dropping net8.0 and net9.0 means a machine with only .NET 8 or 9 can no longer install new releases. It needs the .NET 10 or 11 runtime. Older versions stay on NuGet.
Versioning and release
CI owns
<Version>, so this PR does not bump it by hand. A normal merge tomastertriggerspublish.yml, which does a patch bump (1.2.2) and publishes to NuGet. To ship this as the minor release it should be (1.3.0), merge with[skip ci]in the merge commit subject, then run "Publish NuGet (ytx)" manually withbump: minor. Merging and releasing is John's call.Proof (local, macOS, SDKs 10.0.404 and 11.0.100, runtimes 10.0.15 and 11.0.0)
Packs used
-p:Version=1.3.0to match the planned minor bump. Installs went to scratch tool paths. The global install was not touched.(a) Normal run, repo
global.json(b) SDK 10 only (scratch copy,
global.jsonpinned to 10.0.404 withrollForward: disable, not committed)(c) Install the package from (a)
(d) Package target check, run locally with the step's exact script
🤖 Generated with Claude Code
https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH