Skip to content

V13.0.0/double digits - #76

Open
gimlichael wants to merge 32 commits into
mainfrom
v13.0.0/double-digits
Open

gimlichael wants to merge 32 commits into
mainfrom
v13.0.0/double-digits

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request moves the solution from the .NET 9 baseline to .NET 11 and .NET 10, aligning target frameworks, conditional compilation guards, package versions, CI, and documentation with the new toolchain. It also updates the service update workflow to derive versions from Git tags and release availability from the shared DocFX includes.

Target frameworks:

  • Source, test, benchmark, and app projects target net11.0 and net10.0, keeping netstandard2.0 for source and net48 for Windows tests
  • The net9.0 target is removed from all projects

Dependencies:

  • Microsoft.Extensions packages for net11.0 are pinned to the .NET 11 release candidate, and the .NET 9 package group is removed
  • Codebelt bootstrapper, BenchmarkDotNet extension, and coverlet package versions are upgraded

Conditional compilation:

  • NET9_0_OR_GREATER guards are moved to NET10_0_OR_GREATER, so the Lock type, asynchronous disposal, and default service provider validation apply on every target that supports them

CI and release workflows:

  • CI build, pack, test, SonarCloud, and CodeQL jobs opt into the preview SDK so they build against the .NET 11 projects
  • The service update workflow takes the next version from the latest stable Git tag, reuses a pending TBD changelog entry, and reads release availability from the shared DocFX includes

Documentation:

  • Contributor guide, agent guide, root and NuGet package READMEs, and DocFX pages list .NET 10 and .NET 11 as the supported modern targets

Bump Codebelt bootstrapper, BenchmarkDotNet extension and coverlet package versions, drop the net9 package group and pin the net11 release candidate Microsoft.Extensions packages for the new target framework.
Source, test and app projects now target net11.0 alongside net10.0, and net9.0 is dropped from the target framework lists so the solution tracks the current .NET previews.
With net9 removed from the target frameworks, the NET9_0_OR_GREATER guards are moved to NET10_0_OR_GREATER so the Lock type, async disposal and default service provider validation are used on every target that supports them.
AGENTS.md now points the conditional compilation example at NET10_0_OR_GREATER and names net10.0 and net11.0 as the APIs to guard, matching the target frameworks used by the source projects.
Each reusable build, pack, test, SonarCloud and CodeQL job now sets include-preview so CI can build and test against the net11 preview SDK that the projects now target.
The service update workflow now takes the latest stable vMAJOR.MINOR.PATCH tag as the baseline instead of the first CHANGELOG.md heading, and it reuses a pending TBD entry for the next version. Tags are fetched explicitly so the lookup works on a shallow checkout.
The release-note workflow now reads the Availability line from the shared docfx include files instead of a hardcoded fallback string, so the published TFM list stays in one place.
The shared availability includes and the docfx landing page now reflect .NET 11 as the current target framework, replacing the .NET 9 references.
Contributors are now pointed at a .NET 11 SDK and the current target frameworks, so the guide matches what the repository builds against.
The root README and the NuGet package READMEs list .NET 10 and .NET 11 as the supported modern targets, replacing the outdated .NET 9 mention.
The agent guide now describes the .NET 11 SDK, source TFMs, and test TFMs, so automated contributors build and test against the same targets as the project.
@gimlichael gimlichael self-assigned this Oct 22, 2026
@greptile-apps

greptile-apps Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge, with no outstanding findings.

Summary

The PR moves modern targets to .NET 11 and .NET 10, updates dependencies and CI, and revises release automation and documentation.

  • The project's source, sample, and test projects now build for .NET 10 and .NET 11, with supported compatibility targets kept.
  • Canceled deferred host startup keeps the caller's cancellation token.
  • Host capture recognizes the framework's host-abort signal.
  • Concurrent access starts a deferred host just once.
  • Service updates use stable tags and shared availability text.

Reviews (5) · Last reviewed commit: "changelog" · Reviewed by Greptile

Comment thread .github/workflows/service-update.yml
The packable projects now target .NET 11, so each package's release notes record the new target framework set and the removal of .NET 9 under version 13.0.0.
The changelog summarizes the 13.0.0 major release for humans reading release status: .NET 11 is added, .NET 9 is removed, and the package, test, CI, and documentation baselines move to .NET 11 and .NET 10.
@codecov

codecov Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.08651% with 38 lines in your changes missing coverage. Please review.
✅ Project coverage is 93.96%. Comparing base (23d7f0f) to head (159f959).

Files with missing lines Patch % Lines
...debelt.Extensions.Xunit.Hosting/XunitTestLogger.cs 86.04% 6 Missing ⚠️
...Extensions.Xunit.Hosting/SelfManagedHostFixture.cs 0.00% 4 Missing ⚠️
...ons.Xunit.Hosting/SelfManagedMinimalHostFixture.cs 0.00% 4 Missing ⚠️
...ensions.Xunit.Hosting/ServiceProviderExtensions.cs 0.00% 4 Missing ⚠️
...Hosting.AspNetCore/Http/FakeHttpContextAccessor.cs 91.42% 3 Missing ⚠️
...ebelt.Extensions.Xunit.Hosting/LoggerExtensions.cs 91.66% 3 Missing ⚠️
src/Codebelt.Extensions.Xunit/Test.cs 96.00% 3 Missing ⚠️
....Hosting.AspNetCore/Internal/MinimalWebHostTest.cs 95.74% 0 Missing and 2 partials ⚠️
...s.Xunit.Hosting.AspNetCore/Internal/WebHostTest.cs 96.00% 0 Missing and 2 partials ⚠️
...belt.Extensions.Xunit.Hosting/Internal/HostTest.cs 94.44% 0 Missing and 2 partials ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #76      +/-   ##
==========================================
+ Coverage   92.13%   93.96%   +1.82%     
==========================================
  Files          85       85              
  Lines        1576     1573       -3     
  Branches      173      173              
==========================================
+ Hits         1452     1478      +26     
+ Misses        112       83      -29     
  Partials       12       12              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

gimlichael and others added 13 commits October 27, 2026 15:46
Turn on EnforceCodeStyleInBuild for source projects and reference SonarAnalyzer.CSharp centrally so style issues surface during build.
Align package pins with the current .NET 11 baseline and Cuemon 10.8.2.
Normalize text files to LF so line endings stay consistent across Windows and Linux checkouts.
Run CI on Ubuntu 26.04 and split the Docker test environment into net10.0 and net11.0.
Keep the project-wide NoWarn list instead of replacing it.
Set the 13.0.0 release date to 2026-11-10, the planned go-live date.
IDE0330 is no longer disabled, so the agent guidance now tells contributors to use System.Threading.Lock behind a NET10_0_OR_GREATER guard with a plain object fallback for multi-targeted source projects.
The shared build props now emit warnings consistently, disable NuGet audit for the offline build, and run test projects on the Microsoft Testing Platform runner.
The Sonar analyzer flags a few intentional patterns, such as unused type parameters that bind a fixture to its entry point. Each suppression carries a justification so the intent stays visible.
Cancelling a deferred host now propagates the original cancellation token instead of a bare cancel, and stopping the entry point after the host is captured no longer surfaces as an error. A null host factory check that could never fail was removed.
Concurrent access to a deferred host could start it more than once. A dedicated lock now guards startup, using System.Threading.Lock on net10.0 and later and a plain object on older targets.
New tests cover cancellation of a deferred host, the abort path when stopping an entry point, and concurrent lock-protected startup. The hosting test project now references the minimal console bootstrapper so these scenarios run end to end.
Files were saved with a byte order mark and CRLF line endings, which conflicts with the LF rule in gitattributes. Stripping the BOM and converting to LF brings every file in line with the repository convention and removes noisy diffs.
gimlichael and others added 5 commits October 27, 2026 22:39
Converts files to LF line endings and strips the UTF-8 byte order mark so they match the eol=lf rule in .gitattributes. No content changes.
Removes trailing whitespace and aligns JSON indentation to the two-space style used elsewhere in the repository. No behavioral changes.
Extends the existing analyzer severity overrides to VB files, points the S3267 reference at the current Sonar rule page, and removes the IDE0306, CA1016, and S8970 overrides.
Rewrites the 13.0.0 changelog entry around the .NET 11 baseline and corrects the WSL distribution named in the contributor guide to Ubuntu-26.04.
Comment thread CHANGELOG.md Outdated
@sonarqubecloud

Copy link
Copy Markdown

This branch has not been deployed

No deployments
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.

2 participants