Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Nov 12, 2025

This pull request is a major update focused on adopting .NET 10 (LTS) and removing support for .NET 8 (LTS) across the codebase. It also upgrades dependencies to their latest compatible versions, updates build/test/pack workflows, and improves documentation and release notes to reflect these changes. The changes ensure the project stays current with supported frameworks and dependencies, and streamline maintenance going forward.

Framework and Dependency Upgrades

  • Updated all project and test files to target .NET 10 and .NET 9, removing .NET 8 support, and added .NET 10-specific package references where appropriate (Directory.Build.props, Directory.Packages.props, all *.csproj files). [1] [2] [3] [4] [5] [6] [7]
  • Upgraded all major dependencies (Cuemon, Codebelt, xUnit, Microsoft.NET.Test.Sdk, etc.) to their latest versions compatible with .NET 10 (Directory.Packages.props).
  • Updated Dockerfile and DocFx configuration to use the latest image and tool versions for documentation builds (.docfx/Dockerfile.docfx, .docfx/docfx.json). [1] [2]

Build, Test, and CI/CD Pipeline Updates

  • Updated GitHub Actions workflow to use v3 of all Codebelt job templates for build, pack, test, and SonarCloud analysis; removed .NET 8 from matrix; commented out CodeQL job; updated NuGet push job to v2 (.github/workflows/pipelines.yml). [1] [2] [3] [4] [5]

Documentation and Release Notes

  • Updated README files and release notes across all packages to reflect .NET 10 adoption, dropped .NET 8 support, and clarified supported platforms. Added explanatory notes about support policy and updated project description (README.md, all package README and release notes). [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

Miscellaneous Improvements

  • Updated test project configuration to use xUnit v3 and added support for Microsoft Testing Platform Runner (Directory.Build.props).
  • Minor code cleanup in test files (removed unused using statement) (JsonConverterCollectionExtensionsTest.cs).

Summary by CodeRabbit

  • New Features

    • Version 10.0.0 released—adds official .NET 10 support (retains .NET 9)
  • Chores

    • Dropped .NET 8 support and upgraded core dependencies and package versions
    • Updated CI/workflow actions, container images, and doc generation tooling
    • Migrated test tooling to xUnit v3 and modernized test targets
  • Documentation

    • Expanded README, package release notes and CHANGELOG to reflect the new release and supported platforms

@gimlichael gimlichael requested a review from Copilot November 12, 2025 17:52
@gimlichael gimlichael self-assigned this Nov 12, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 12, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

This PR upgrades target frameworks to .NET 10.0, bumps numerous package versions (including release notes), migrates test tooling to xunit v3, updates Docker/DocFX and CI action/image references, cleans unused test imports, and changes a few async test signatures to return Task.

Changes

Cohort / File(s) Summary
Docker & DocFX
.docfx/Dockerfile.docfx, .docfx/docfx.json
Bumped NGINX base image 1.29.1→1.29.3 and DocFX build image 2.78.3→2.78.4; DocFX config TargetFramework changed net9.0→net10.0.
CI workflows & Test env
.github/workflows/pipelines.yml, testenvironments.json
Updated many GitHub Action refs v2→v3, commented-out CodeQL job, added codecov to deploy needs, nuget-push v1→v2; test Docker image updated to include net10.0.100 tag.
Central build & packages
Directory.Build.props, Directory.Packages.props
Switched non-test and test TargetFrameworks to include net10.0, added OutputType/UseMicrosoftTestingPlatformRunner for tests, migrated xunit → xunit.v3 and runners, bumped many Codebelt/Cuemon packages and Microsoft.NET.Test.Sdk.
Project files
src/.../*.csproj, test/.../*.csproj
Updated TargetFrameworks across library and test projects from net9.0;net8.0 → net10.0;net9.0 (multiple .csproj files).
Release notes & READMEs
.nuget/*/PackageReleaseNotes.txt, .nuget/*/README.md, CHANGELOG.md
Added Version 10.0.0 entries, updated Availability to .NET 10/.NET 9, ALM notes (removed net8, added net10), and README platform target blocks; changelog entry for 10.0.0 added.
Repository README
README.md
Inserted About/feature/docs sections and changed top heading from H1 to H2; added supported-platforms and packages overview.
Test code - cleanup
test/**/Json*FormatterTest.cs, test/**/Converters/*, test/**/ValidatorExtensionsTest.cs, test/**/ContractResolverExtensionsTest.cs, test/**/JDataTest.cs, test/**/MvcBuilderExtensionsTests.cs
Removed unused using directives (Xunit.Abstractions, Cuemon.Extensions) across multiple test files.
Test code - async signatures
test/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests/Formatters/ServiceCollectionExtensionsTest.cs
Two test methods changed from public async voidpublic async Task (Theory and non-Theory variants) to return Task.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Pay attention to xunit v3 migration across test projects (APIs/attributes and runners).
  • Verify test async signature changes and any test discovery implications.
  • Confirm Directory.Packages.props and Directory.Build.props changes align with all project conditionals and multi-targeting.

Possibly related PRs

Poem

🐰 A hop to ten, I nibble and cheer,
Packages rise and tests shift gear.
xunit v3 hops in with a grin,
Async Tasks now race to begin —
Docs and Docker wear a shiny new year. 🎉

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title 'V10.0.0/launch' is vague and generic, using a version-branch naming pattern that doesn't convey what the changeset actually accomplishes. Consider a more descriptive title like 'Add .NET 10 support and remove .NET 8' or 'Upgrade to .NET 10 LTS and modernize dependencies' to clearly summarize the main change.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch v10.0.0/launch

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 55e9ff2 and 36a09cb.

📒 Files selected for processing (1)
  • .nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/README.md (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: call-pack (Release) / 📦 Pack
  • GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
  • GitHub Check: call-pack (Debug) / 📦 Pack
  • GitHub Check: call-test (ubuntu-24.04, Debug) / 🧪 Test
  • GitHub Check: call-test (windows-2022, Release) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Release) / 🧪 Test
🔇 Additional comments (2)
.nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/README.md (2)

12-12: Copy-paste error corrected.

The header has been properly updated from "Codebelt.Extensions.AspNetCore.Text.Json" to "Codebelt.Extensions.AspNetCore.Newtonsoft.Json", resolving the issue flagged in previous reviews.


5-8: Framework support accurately reflects .NET 10 adoption and .NET 8 removal.

The updated support statement correctly emphasizes .NET 9 and .NET 10 for modern development while maintaining backward compatibility with .NET Standard 2 and .NET Framework 4.6.2+, aligning with the PR's objective to drop .NET 8 (LTS) and adopt .NET 10 (LTS).


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

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot finished reviewing on behalf of gimlichael November 12, 2025 17:54
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request represents a major version update (v10.0.0) that migrates the codebase from .NET 8 (LTS) to .NET 10 (LTS), while maintaining .NET 9 support. The changes comprehensively update all project files, dependencies, test configurations, documentation, and CI/CD pipelines to reflect this framework transition.

Key Changes:

  • Replaced .NET 8 target framework with .NET 10 across all projects (maintaining .NET 9 and .NET Standard 2.0 where applicable)
  • Updated all dependencies to latest compatible versions (Cuemon 10.0.0, Codebelt.Extensions.Xunit 11.0.0, xUnit v3, etc.)
  • Migrated test infrastructure to xUnit v3 and Microsoft Testing Platform Runner

Reviewed Changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
testenvironments.json Updated Docker image to include .NET 10.0.100 SDK
Multiple test files (ValidatorExtensionsTest.cs, ContractResolverExtensionsTest.cs, etc.) Removed unused Xunit.Abstractions using statements
ServiceCollectionExtensionsTest.cs Changed test method from async void to async Task (best practice)
All .csproj files Updated TargetFrameworks from net9.0;net8.0 to net10.0;net9.0
Directory.Packages.props Upgraded all package dependencies and added .NET 10-specific package versions
Directory.Build.props Updated framework targets and added Microsoft Testing Platform Runner support
README.md and package READMEs Enhanced documentation with platform support details and added support policy note
PackageReleaseNotes.txt files Added v10.0.0 release notes documenting the framework changes
CHANGELOG.md Added v10.0.0 changelog entry
.github/workflows/pipelines.yml Updated to v3 of Codebelt job templates and removed CodeQL job
.docfx/docfx.json Updated TargetFramework to net10.0 for documentation generation
.docfx/Dockerfile.docfx Updated nginx and docfx image versions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 556c606 and 55e9ff2.

📒 Files selected for processing (32)
  • .docfx/Dockerfile.docfx (1 hunks)
  • .docfx/docfx.json (1 hunks)
  • .github/workflows/pipelines.yml (5 hunks)
  • .nuget/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/README.md (1 hunks)
  • .nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/README.md (1 hunks)
  • .nuget/Codebelt.Extensions.Newtonsoft.Json.App/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Extensions.Newtonsoft.Json.App/README.md (1 hunks)
  • .nuget/Codebelt.Extensions.Newtonsoft.Json/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Extensions.Newtonsoft.Json/README.md (1 hunks)
  • CHANGELOG.md (1 hunks)
  • Directory.Build.props (3 hunks)
  • Directory.Packages.props (1 hunks)
  • README.md (1 hunks)
  • src/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.csproj (1 hunks)
  • src/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.csproj (1 hunks)
  • src/Codebelt.Extensions.Newtonsoft.Json.App/Codebelt.Extensions.Newtonsoft.Json.App.csproj (1 hunks)
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests.csproj (1 hunks)
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/Converters/JsonConverterCollectionExtensionsTest.cs (0 hunks)
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/JsonSerializationInputFormatterTest.cs (0 hunks)
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/JsonSerializationOutputFormatterTest.cs (0 hunks)
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/MvcBuilderExtensionsTests.cs (0 hunks)
  • test/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests.csproj (1 hunks)
  • test/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests/Formatters/ServiceCollectionExtensionsTest.cs (1 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Converters/JsonConverterCollectionExtensionsTest.cs (0 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Formatters/NewtonsoftJsonFormatterOptionsTest.cs (0 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Formatters/NewtonsoftJsonFormatterTest.cs (0 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/JDataTest.cs (0 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Serialization/ContractResolverExtensionsTest.cs (0 hunks)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/ValidatorExtensionsTest.cs (0 hunks)
  • testenvironments.json (1 hunks)
💤 Files with no reviewable changes (10)
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Formatters/NewtonsoftJsonFormatterTest.cs
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Formatters/NewtonsoftJsonFormatterOptionsTest.cs
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/MvcBuilderExtensionsTests.cs
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/ValidatorExtensionsTest.cs
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/JDataTest.cs
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/JsonSerializationOutputFormatterTest.cs
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Serialization/ContractResolverExtensionsTest.cs
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/JsonSerializationInputFormatterTest.cs
  • test/Codebelt.Extensions.Newtonsoft.Json.Tests/Converters/JsonConverterCollectionExtensionsTest.cs
  • test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/Converters/JsonConverterCollectionExtensionsTest.cs
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Release) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Debug) / 🧪 Test
  • GitHub Check: call-test (windows-2022, Release) / 🧪 Test
  • GitHub Check: call-pack (Release) / 📦 Pack
  • GitHub Check: call-pack (Debug) / 📦 Pack
  • GitHub Check: CodeQL analysis (csharp)
  • GitHub Check: Agent
🔇 Additional comments (24)
test/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests/Formatters/ServiceCollectionExtensionsTest.cs (1)

220-220: LGTM! Proper async test method signature.

The migration from async void to async Task aligns with xUnit v3 best practices and ensures the test runner can properly track async test completion and handle exceptions correctly.

.docfx/docfx.json (1)

17-17: LGTM!

The DocFx TargetFramework update to net10.0 is consistent with the broader .NET 10 migration across the codebase.

CHANGELOG.md (1)

10-15: LGTM!

The version 10.0.0 entry follows the Keep a Changelog format and appropriately documents the .NET 10 adoption and .NET 8 removal. Positioning at the top is correct.

.docfx/Dockerfile.docfx (1)

1-1: LGTM!

The Docker image updates are minor patch versions (NGINX 1.29.1 → 1.29.3, DocFx 2.78.3 → 2.78.4), which are safe maintenance updates.

Also applies to: 6-6

.nuget/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/README.md (1)

5-8: LGTM!

The platform support documentation accurately reflects the updated target frameworks (.NET 9, .NET 10, .NET Standard 2, and .NET Framework 4.6.2+) and improves clarity for users.

testenvironments.json (1)

12-12: LGTM!

The Docker image tag update adds .NET 10.0.100 support while maintaining .NET 8 and 9 patch levels, enabling comprehensive test coverage across all supported frameworks.

.nuget/Codebelt.Extensions.Newtonsoft.Json/README.md (1)

5-8: LGTM!

The platform support documentation is consistent with other package READMEs and accurately reflects the updated target frameworks.

.nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/README.md (1)

5-8: LGTM!

The platform support documentation is accurate and consistent with other package READMEs.

.nuget/Codebelt.Extensions.Newtonsoft.Json/PackageReleaseNotes.txt (1)

1-8: LGTM!

The Version 10.0.0 entry is well-structured and clearly documents the migration from .NET 8 to .NET 10 while highlighting dependency updates. The ALM notes provide good transparency for package consumers.

.nuget/Codebelt.Extensions.Newtonsoft.Json.App/PackageReleaseNotes.txt (1)

1-8: Release notes are clear and well-structured.

The version 10.0.0 release notes appropriately document the breaking change (removal of .NET 8 LTS support) and the addition of .NET 10 LTS. The availability statement correctly reflects the supported frameworks.

.nuget/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/PackageReleaseNotes.txt (1)

1-8: Consistent release documentation.

The release notes maintain consistency with the other package release notes in the repository, clearly documenting the framework migration.

.github/workflows/pipelines.yml (1)

83-88: CodeQL security scanning has been disabled.

The CodeQL workflow has been commented out without explanation in the PR description. This removes automated security vulnerability scanning from the pipeline.

Please clarify:

  • Is this change intentional or temporary?
  • If permanent, what alternative security scanning approach will be used?
  • Should CodeQL be re-enabled before merging?
Directory.Packages.props (2)

25-30: Good use of conditional package versioning.

The conditional package references correctly align the Microsoft.AspNetCore.Mvc.NewtonsoftJson version with the target framework (9.0.11 for .NET 9, 10.0.0 for .NET 10).


21-22: Review comment is incorrect and should be dismissed.

Test projects reference Codebelt.Extensions.Xunit (a wrapper package), not xunit or xunit.v3 directly. The xunit.v3 update in Directory.Packages.props is a transitive dependency managed through this wrapper. Since xUnit v3 maintains backward compatibility with v2 APIs, and test code uses only standard attributes like [Fact] and [Theory], no code changes are required in test projects.

Likely an incorrect or invalid review comment.

src/Codebelt.Extensions.Newtonsoft.Json.App/Codebelt.Extensions.Newtonsoft.Json.App.csproj (1)

4-4: Target frameworks updated correctly.

The migration from net9.0;net8.0 to net10.0;net9.0 aligns with the PR objectives and is consistent across all project files.

src/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.csproj (1)

4-4: Target frameworks migrated consistently.

The framework update is consistent with the other project files in this PR.

test/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json.Tests.csproj (1)

4-4: Test project frameworks updated.

The test project correctly targets the same frameworks as the source projects.

src/Codebelt.Extensions.AspNetCore.Newtonsoft.Json/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.csproj (1)

4-4: LGTM! Clean target framework update.

The target frameworks have been updated correctly to support .NET 10 and .NET 9, aligning with the PR objectives.

test/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests/Codebelt.Extensions.AspNetCore.Newtonsoft.Json.Tests.csproj (1)

4-4: LGTM! Test project target frameworks updated correctly.

The test project now targets the same frameworks as the source project, which is the expected configuration.

.nuget/Codebelt.Extensions.AspNetCore.Mvc.Formatters.Newtonsoft.Json/PackageReleaseNotes.txt (1)

1-8: LGTM! Clear and comprehensive release notes.

The version 10.0.0 release notes clearly communicate the platform support changes and dependency updates. The format is consistent with the existing release note structure.

README.md (1)

3-23: LGTM! Excellent documentation improvements.

The enhanced README provides clear information about:

  • Project goals and license
  • Supported platforms (.NET 9, .NET 10, .NET Standard 2, .NET Framework 4.6.2+)
  • Version targeting strategy

These additions significantly improve the user experience and set appropriate expectations.

Directory.Build.props (3)

59-59: LGTM! Test project configuration updated for Microsoft Testing Platform Runner.

The changes to OutputType and UseMicrosoftTestingPlatformRunner are correct and required for the Microsoft Testing Platform Runner, which provides improved test execution and reporting capabilities with xUnit v3.

Also applies to: 69-69


74-75: Verify test compatibility with xUnit v3 and review breaking changes.

xUnit v3 is production-ready and stable as of November 2025, with v3.2.0 released on November 2, 2025. Ensure that:

  • All test code has been verified to work with xUnit v3 (the PR summary indicates this migration has been addressed)
  • Documented breaking changes between v2 and v3 have been properly handled in the codebase

18-18: Approved — .NET 10 is production-ready and available for use.

.NET 10 was released as a General Availability (GA) LTS on November 11, 2025, and is marked as production-ready with three years of support. The target framework updates across Directory.Build.props are appropriate and safe for production release.

@sonarqubecloud
Copy link

@gimlichael gimlichael merged commit 0704f7c into main Nov 12, 2025
13 checks passed
@gimlichael gimlichael deleted the v10.0.0/launch branch November 12, 2025 18:17
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