Repository navigation
feat!: target net10.0 and net11.0, drop net8.0 and net9.0 - #24
Merged
Merged
Conversation
Follow supported .NET versions only. .NET 8 and .NET 9 left support on 10 November 2026. - Set TargetFrameworks to net10.0;net11.0 and keep RollForward Major. - CI installs the 10.0.x and 11.0.x SDKs only and runs the integration tests once per target framework. - Integration scripts take the target framework as an argument (default net10.0) instead of hardcoding net8.0. - Update AGENTS.md, copilot instructions, README, launch.json and the package description and release notes. - Bump version to 1.7.0. BREAKING CHANGE: a machine with only the .NET 8 or .NET 9 runtime can no longer install new releases. Install .NET 10 or later, or stay on 1.6.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH
- Add global.json: SDK 10.0.100, rollForward latestMajor, no prereleases. .NET 10 LTS is the baseline and the newest installed SDK is used. - Build net11.0 only when the SDK is 11.0 or later, so a machine with only SDK 10 still builds and runs net10.0. CI installs both SDKs, so the published package keeps both targets. - Document the SDK policy in README, AGENTS.md and copilot instructions. 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 them. If CI ever builds with SDK 10 alone, the nupkg ships without net11.0. Check that tools/net10.0 and tools/net11.0 are both present right after pack, before the NuGet login, publish and tag steps. 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/solrevdev.seedfolder.csproj: targetsnet10.0, plusnet11.0when the SDK is 11.0 or later (wasnet8.0;net9.0;net10.0).RollForwardstaysMajor. Version bumped 1.6.2 to 1.7.0. Package description and release notes now name .NET 10 and .NET 11 only.global.json(new):{ "sdk": { "version": "10.0.100", "rollForward": "latestMajor", "allowPrerelease": false } }..github/workflows/ci.yml: setup-dotnet installs10.0.xand11.0.xexplicitly. Integration tests run once per target framework..github/workflows/ci.yml: a newcheck package targetsstep runs right afterdotnet pack. It fails the run if the nupkg lackstools/net10.0/ortools/net11.0/. It runs before the NuGet login, publish and tag steps.tests/integration-test.shandtests/integration-test.ps1: take the target framework as an argument (defaultnet10.0). They hardcodednet8.0, so CI would have failed after this change.AGENTS.md,.github/copilot-instructions.md,README.md,.vscode/launch.json: namenet10.0andnet11.0only and describe the SDK policy. README "Run tests" now points at the integration scripts, since there is nodotnet testproject.Why
On 11 Nov 2026 John decided the project follows supported .NET versions only: tools and tests target
net10.0;net11.0, and nothing targets 8 or 9. .NET 8 and .NET 9 left support on 10 Nov 2026.SDK policy
.NET 10 is the LTS and the baseline.
global.jsonpins SDK10.0.100withrollForward: latestMajor, so the newest installed release SDK is used.net10.0only.Conditional target
CI installs both SDKs, so latestMajor selects SDK 11 there and the published package always holds
tools/net10.0andtools/net11.0.Package target check
The targets in the package depend on the SDK that built it. This step stops a release that would ship without one:
Step order: build, integration tests (net10.0), integration tests (net11.0), pack, check package targets, verify versioned package, NuGet login, publish.
tag-releaseruns only after publish succeeds.I extracted the step script from
ci.ymland ran it locally against CI-style packs:tools/net10.0/any/solrevdev.seedfolder.dllandtools/net11.0/any/solrevdev.seedfolder.dll. The check passed with exit 0.rollForward: disable: the package holds onlytools/net10.0/any/solrevdev.seedfolder.dll. The check failed with exit 1 and printedPackage is missing tools/net11.0. The worktree was removed afterwards.Install compatibility
Dropping
net8.0andnet9.0means a machine with only the .NET 8 or .NET 9 runtime can no longer install new releases. Those users must install .NET 10 or later, or stay on 1.6.2. This is why the first commit is markedfeat!. The version bump is minor per John's call.Merging may publish to NuGet
CI publishes to NuGet on push to
masterand then tagsv1.7.0. Merging this PR will likely release 1.7.0, so merging is John's call. This PR has not been merged.Verification
Local macOS machine with SDKs 10.0.404 and 11.0.100 and runtimes 10.0.15 and 11.0.0. No global tool, SDK or runtime was changed.
(a) Normal run: SDK 11 via latestMajor
tests/integration-test.sh <tfm>tests/integration-test.ps1 -Framework <tfm>(b) SDK 10 only
A scratch git worktree with
global.jsonset to{"sdk":{"version":"10.0.404","rollForward":"disable"}}. That pin was not committed, and the worktree was removed afterwards.Only
net10.0was built. Forcing-f net11.0fails withNETSDK1045as expected, which shows the condition is what keeps SDK 10 builds working.tests/integration-test.sh net10.0tests/integration-test.ps1 -Framework net10.0(c) Install the package from (a)
🤖 Generated with Claude Code
https://claude.ai/code/session_014Mjr3bTLWVmY8sc2j5bcqH