Skip to content

feat: move the template to .NET 11 - #627

Merged
devantler merged 8 commits into
mainfrom
claude/dotnet-11-599
Nov 11, 2026
Merged

devantler merged 8 commits into
mainfrom
claude/dotnet-11-599

Conversation

@devantler

@devantler devantler commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

.NET 11 became generally available on 10 November 2026. Microsoft's release index lists 11.0.0 with SDK 11.0.100 and support phase active. The template's toolchain policy is to track the latest released .NET and to move the target framework and the SDK floor together, so a project started from the template today should start on .NET 11.

What

  • Both project files target net11.0.
  • global.json requires SDK 11.0.100 or later within 11.0.x. That is the first generally available .NET 11 SDK.
  • README.md, CONTRIBUTING.md and AGENTS.md name the new framework and floor. No net10.0 or 10.0.x mention is left in the repository.
  • The package-upload job installs the 11.0.x SDK instead of 10.0.x, so the release path uses one SDK generation. That job loads no project; it only runs dotnet nuget push, which the scaffold check already exercises against a local feed on the SDK from global.json.
  • Validation uses the released shared test action with .NET 11 support. Package preparation and its scaffold regression use dotnet-releaser 0.25.0, which fixes .NET 11 SDK build-log compatibility.

Trigger: the .NET 11 general-availability release.

On the open question in the issue (standard-term versus long-term support): the release index gives .NET 11 and .NET 10 the same end-of-support date, 14 November 2028. Following the "latest released .NET" policy therefore costs no support time, and the policy text is unchanged.

Fixes #599

🤖 Generated with Claude Code

.NET 11 became generally available on 2026-11-10 (SDK 11.0.100). Move
both project files to net11.0 and the global.json SDK floor to 11.0.100
in one change, as the toolchain policy requires, and update the docs and
the package-upload job to match.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@devantler

devantler commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer (interactive Claude Code session)

Why this is red, and what unblocks it (updated 11 November, 06:15 UTC)

Two things stop this change today. Neither is in this pull request.

  1. The shared test action installs only the .NET 9 and 10 SDKs. The three .NET template tests jobs fail at restore with "A compatible .NET SDK was not found. Requested SDK version: 11.0.100". feat(run-dotnet-tests)!: provision .NET 11 and retire the end-of-life .NET 9 SDK .github#895 makes the action install 10.0.402 and 11.0.100. After it is released, this pull request moves its run-dotnet-tests pin to that release.
  2. dotnet-releaser does not work with the .NET 11 SDK. Validate Scaffold packs the example with it, and the tool aborts while loading the project ("BuildEvent record … is of unsupported type: 36"). I checked 0.24.0 and the newest release, 0.24.1, and tried running the tool on the .NET 11 runtime; the two extra commit pairs in the history are those probes and their reverts. Reported upstream as dotnet-releaser build fails with the .NET 11 SDK: the build-event reader rejects a record of type 36 xoofx/dotnet-releaser#78.

The diff is the plain move to .NET 11 again. It stays a draft until a dotnet-releaser release that supports the .NET 11 SDK exists; #599 carries the blocker record.

🤖 Generated with Claude Code

devantler and others added 4 commits November 11, 2026 06:53
dotnet-releaser 0.24 is built for .NET 10. On that runtime it reads the
build log with the .NET 10 MSBuild and aborts on a record the .NET 11
SDK writes ("unsupported type: 36"). DOTNET_ROLL_FORWARD=LatestMajor
runs it on the .NET 11 runtime, where it loads the MSBuild of the SDK
that global.json selects.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Temporary: checks whether the newest release of the packaging tool reads
the .NET 11 SDK's build log. Reverted or kept depending on the result.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
devantler and others added 2 commits November 11, 2026 07:18
Temporary: runs the template's tests with the unreleased action that
installs the .NET 11 SDK, to prove the move end to end. Reverted after
the run.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@devantler

devantler commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Blocker: none

Cleared 2026-11-11: The upstream .NET 11 blocker is resolved: dotnet-releaser 0.25.0 is published on NuGet and xoofx/dotnet-releaser#78 is closed as completed. The release replaces the SDK-dependent build-event reader and includes a net11.0 end-to-end test. Source https://github.com/xoofx/dotnet-releaser/releases/tag/0.25.0 and the NuGet flat-container version index were verified on 11 November. Resume the existing draft by updating dotnet-releaser and the released shared .NET 11 test action together, then collect fresh scaffold validation, review and user-path evidence. This clears the external blocker only; the draft has not passed its delivery gates.

Previous record (historical):

> 🤖 Generated by the Agentic Engineer

<!-- pr-blocker-record -->

**Blocker:** xoofx/dotnet-releaser#78 | upstream | last-verified 2026-11-11: NuGet still lists 0.24.1 as the newest dotnet-releaser release, which aborts on the .NET 11 SDK, so the required scaffold validation cannot pass. The other blocker has cleared: the shared .NET 11 test-action support (devantler-tech/.github#895) is released in .github v21.0.x. Resume after a dotnet-releaser release that supports the .NET 11 SDK exists: then move the `run-dotnet-tests` pin to the current .github release and the dotnet-releaser version in the same push.

Install the released shared test action and dotnet-releaser 0.25.0 together so .NET 11 validation and package preparation use supported tooling.

Refs: #599
@devantler

devantler commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resumed the existing draft at signed d6c97b9a92826544d25de3a71f27358c54dfaab3. The prior scaffold run 42972004177 fails on build-event type 36; the platform test run cannot find SDK 11.0.100. The repair moves the test-action and both packaging-tool callsites together, with their existing contract and documentation aligned.

Release applicability review:

  • Shared automation v20.1.16–v21.1.0: reviewed the 14-commit range and every published release in it. The relevant major change installs SDKs 10.0.402 and 11.0.100 and retires .NET 9. This template targets .NET 11 and needs no .NET 9 compatibility. Other changes affect unused workflows, documentation or aggregate routing; no adaptation is needed for this action call.
  • dotnet-releaser 0.24.1 and 0.25.0: the .NET 11 build-log reader and SDK-selection fixes apply. Runtime roll-forward and duplicate test-coverage fixes require no template adaptation. The 0.24.1 trusted-publishing change is outside this caller: package building still receives no publishing credentials, and the separate NuGet transport job remains the credential owner.

Workflow lint and whitespace checks pass. Local build/test execution is held because disk preflight stayed below 20 GB after the prescribed reclaim, and this host has only .NET 10 SDKs. Hosted validation has now passed at this exact head. Scaffold run 43072095752 exercised onboarding rename, built and tested the renamed project on .NET 11, created stable and prerelease packages, and verified identical package bytes in a disposable local feed. Matrix run 43072095822 passed the required Ubuntu, Windows and macOS tests. This is the user-path evaluation: a newly renamed scaffold builds and tests on .NET 11, and package preparation delivers the expected bytes without publication credentials. It does not claim a NuGet publication. Workflow security scanning and the Code Quality run also succeeded. A separate managed C# analysis remains queued and CodeRabbit has only acknowledged the new-head request, so the draft stays unpromoted.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Nov 11, 2026

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The example and test projects now target .NET 11. The configured SDK floor and documented framework and SDK requirements also move to .NET 11. CI workflows update the dotnet-releaser version, the .NET test action, and the .NET version used for NuGet transport. The publisher workflow contract check now requires dotnet-releaser 0.25.0.

Merge Risk: Minimal · up to d6c97

The change moves the template to .NET 11 and updates the related tooling versions and documentation. No concrete defect was identified; merge once the required hosted scaffold and platform tests pass at the current head.

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

Failed Failed checks: 1 inconclusive

Check name Status Explanation Resolution
Linked Issues check Inconclusive Issue #599 requires the two project files and global.json to move to .NET 11 together, updated documentation, package compatibility, and passing Ubuntu, Windows, and macOS checks. The supplied chang… Provide successful current-head evidence for the scaffold validation, Ubuntu, Windows, and macOS checks. Provide evidence that a fresh template copy passes dotnet build and dotnet test.
Passed Passed checks: 4 passed

Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: moving the template to .NET 11.
Description check Passed The description directly explains the .NET 11 migration, affected projects, SDK and tooling updates, trigger, and linked issue.
Out of Scope Changes check Passed The changed workflows, documentation, project files, SDK floor, package-tool version, and workflow contract test all support issue #599. The workflow and dotnet-releaser updates address .NET 11 vali…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Full details: Out of Scope Changes check

Explanation

The changed workflows, documentation, project files, SDK floor, package-tool version, and workflow contract test all support issue #599. The workflow and dotnet-releaser updates address .NET 11 validation and package compatibility. No unrelated change is shown in the supplied summary.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (9 skipped: 9 unsupported.)

Full details: Linked Issues check

Explanation

Issue #599 requires the two project files and global.json to move to .NET 11 together, updated documentation, package compatibility, and passing Ubuntu, Windows, and macOS checks. The supplied change summary shows net11.0, SDK 11.0.100, documentation updates, the .NET 11 package transport, dotnet-releaser 0.25.0, and the supported test action. The supplied PR evidence states that hosted scaffold validation and the three platform tests still need to pass. It does not establish fresh-template dotnet build and dotnet test success or required CI success.

Resolution

Provide successful current-head evidence for the scaffold validation, Ubuntu, Windows, and macOS checks. Provide evidence that a fresh template copy passes dotnet build and dotnet test.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 8c822909-d89e-4c72-9936-6b2554652958
Commits

Reviewing files that changed from the base of the PR and between 972d4fd and d6c97b9.

Files selected for processing: 10

  • .github/workflows/publish.yaml
  • .github/workflows/run-dotnet-tests.yaml
  • .github/workflows/validate-scaffold.yaml
  • AGENTS.md
  • CONTRIBUTING.md
  • README.md
  • global.json
  • scripts/workflow-ownership.test.sh
  • src/Example/Example.csproj
  • tests/Example.Tests/Example.Tests.csproj

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details

Context from checks skipped due to timeout: 2

  • GitHub Check: CodeRabbit
  • GitHub Check: Analyze (csharp)
Additional context used

Code guidelines: 1

AGENTS.md — auto-discovered
Path-based instructions: 3

Source excerpt: **Toolchain-floor policy.**

CodeRabbit inference engine (AGENTS.md)

Files:

  • tests/Example.Tests/Example.Tests.csproj
  • global.json
  • src/Example/Example.csproj
Source excerpt: **NuGet publication:** `dotnet-releaser.toml` targets the library only and explicitly disables GitHub publication, which stays owned by semantic-release.

CodeRabbit inference engine (AGENTS.md)

Files:

  • .github/workflows/publish.yaml
Source excerpt: **Required validation:** the repository ruleset requires `.NET template tests (ubuntu-latest)`, `.NET template tests (windows-latest)` and `.NET template tests (macos-latest)` from GitHub Actions on the default branch, witho...

CodeRabbit inference engine (AGENTS.md)

Files:

  • .github/workflows/run-dotnet-tests.yaml

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Promoting at d6c97b9a92826544d25de3a71f27358c54dfaab3. All three readiness conditions hold at this head:

  • Tested: every check is green, including the managed C# analysis that was still queued at the last update. CI - Required Checks passed and the PR has no conflict with main.
  • Reviewed: CodeRabbit reviewed this head and generated no actionable comments. No review threads are open. The only item CodeRabbit marked inconclusive is the linked-issue evidence check. Its evidence is the scaffold run and the three-platform matrix run named in the previous comment.
  • Evaluated as a user: scaffold run 43072095752 renamed a fresh template copy, built and tested it on .NET 11, and produced identical package bytes in a disposable local feed.

@devantler
devantler marked this pull request as ready for review November 11, 2026 19:11
@devantler
devantler requested a review from a team as a code owner November 11, 2026 19:11
@devantler
devantler merged commit 8843816 into main Nov 11, 2026
19 checks passed
@devantler
devantler deleted the claude/dotnet-11-599 branch November 11, 2026 19:11
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.

Move the template to .NET 11 once it reaches general availability

1 participant