Skip to content

Conversation

@gimlichael
Copy link
Member

@gimlichael gimlichael commented Nov 13, 2025

This pull request introduces a major update focused on supporting .NET 10 and removing support for .NET 8, alongside dependency and workflow upgrades. The changes ensure compatibility with the latest .NET versions, modernize the CI/CD pipeline, and update documentation to reflect the new direction.

Platform and Framework Updates:

  • Updated target frameworks to support .NET 10 and .NET 9, removing .NET 8 from both main and test projects (Directory.Build.props). [1] [2]
  • Docker and test environments upgraded to include .NET 10 support (.docfx/Dockerfile.docfx, testenvironments.json). [1] [2]

Dependency and Package Updates:

  • Upgraded all major dependencies to their latest compatible versions, including Cuemon.Core, Codebelt.Extensions.Xunit.App, and xunit.v3 packages (Directory.Packages.props).
  • Test packages migrated to xunit.v3 and related runners for improved test support (Directory.Build.props).

CI/CD Pipeline Modernization:

  • Updated all reusable workflow references to latest major versions (v3 or v2) and adjusted job dependencies in .github/workflows/pipelines.yml. [1] [2] [3] [4] [5]

Documentation and Release Notes:

  • Documentation and README updated to reflect .NET 10 support and the project’s focus on latest LTS/STS .NET versions (README.md, .nuget/Codebelt.Unitify/README.md, .docfx/includes/availability-default.md, .docfx/includes/availability-modern.md). [1] [2] [3] [4]
  • Added release notes for version 10.0.0, highlighting platform changes and dependency upgrades (.nuget/Codebelt.Unitify/PackageReleaseNotes.txt, CHANGELOG.md). [1] [2]

Codebase Cleanup:

  • Removed unused Xunit.Abstractions imports from all test files for cleaner code (test/Codebelt.Unitify/*Test.cs). [1] [2] [3] [4] [5] [6] [7] [8]

Summary by CodeRabbit

  • New Features

    • Added support for .NET 10 (LTS)
  • Removed

    • Dropped support for .NET 8
  • Chores

    • Updated package versions and CI/CD workflow references
    • Migrated test tooling to xUnit v3 and updated test configurations
    • Bumped Docker/DocFX image tags
  • Documentation

    • Added/updated README, changelog, release notes, and documentation metadata

@gimlichael gimlichael requested a review from Copilot November 13, 2025 15:49
@gimlichael gimlichael self-assigned this Nov 13, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 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

Upgrade to target .NET 10: bump framework targets, package versions, xUnit→v3, documentation availability, Docker/DocFX images, CI reusable workflow refs v2→v3, and adjust test configuration and test files (removed Xunit.Abstractions usings).

Changes

Cohort / File(s) Change Summary
DocFX & Docker
.../.docfx/Dockerfile.docfx, .../.docfx/docfx.json, testenvironments.json
NGINX base image 1.29.1-alpine → 1.29.3-alpine; DocFX build image 2.78.3 → 2.78.4; DocFX metadata target net9.0 → net10.0; test Docker image tag updated to include net10.0.100.
Documentation & Release Notes
.../.docfx/includes/availability-default.md, .../availability-modern.md, README.md, CHANGELOG.md, .nuget/Codebelt.Unitify/*
Availability lines updated from .NET 8/9 → .NET 9/10; added v10.0.0 release notes (drops .NET 8, adds .NET 10); README About/Documentation/Packages content extended.
Build & Packaging
Directory.Build.props, Directory.Packages.props
Non-test projects: net9.0;net8.0 → net10.0;net9.0; test projects: net9.0;net8.0 → net10.0;net9.0; added test OutputType/UseMicrosoftTestingPlatformRunner; migrated xunit → xunit.v3 (3.1.0) and runner to xunit.v3.runner.console (3.2.0); bumped Codebelt.Extensions.Xunit.App 10.0.7→11.0.0, Cuemon.Core 9.0.10→10.0.0, Microsoft.NET.Test.Sdk 18.0.0→18.0.1.
CI/CD Workflows
.github/workflows/pipelines.yml
Bumped reusable workflow refs v2 → v3 for build/pack/test/sonarcloud; nuget-push v1 → v2; added build: true flag to test job; commented out CodeQL block; adjusted deploy job needs.
Tests
test/Codebelt.Unitify/*.cs
Removed using Xunit.Abstractions; from all test files (BaseUnitTest, BinaryPrefixTest, BitStorageTest, ByteStorageTest, DecimalPrefixTest, PrefixUnitExtensionsTest, UnitFactoryTest, UnitTest).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Check that removal of using Xunit.Abstractions doesn't break resolution of ITestOutputHelper (global using or fully-qualified references may be required).
  • Validate test runner settings (UseMicrosoftTestingPlatformRunner) and xunit.v3 migration compatibility.
  • Confirm package bumps (Cuemon.Core, Codebelt.Extensions.Xunit.App) are compatible with net10.0 and xunit v3.
  • Verify CI changes (reusable job versions, commented CodeQL, deploy needs) behave as intended.

Possibly related PRs

  • V9.0.6/service update #11 — Overlaps in packaging and release metadata changes (Directory.Packages.props, PackageReleaseNotes, CHANGELOG, testenvironments.json).
  • ⬆️ bump dependencies #7 — Related edits to Directory.Packages.props, Directory.Build.props and testenvironments.json for package and test-image bumps.
  • V9.0.3/package maintenance #8 — Similar updates to .docfx/Dockerfile.docfx, workflows, and package/workflow versions.

Poem

🐰 Ten hops in, nine takes a bow,
Packages bumped and docs show how,
Tests reborn with a newer runner,
CI steps up, images shiner and sunnier,
I nibble changelogs — Unitify leaps now! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'V10.0.0/launch' is vague and does not clearly convey the main purpose of the changeset, using a generic versioning format without describing what the launch entails. Revise the title to be more descriptive, such as 'Support .NET 10 and upgrade dependencies to version 10.0.0' to clearly summarize the primary changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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 e26c9ad and d63a7e9.

📒 Files selected for processing (1)
  • .docfx/docfx.json (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). (4)
  • GitHub Check: call-test (windows-2022, Release) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Debug) / 🧪 Test
  • GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
  • GitHub Check: call-test (ubuntu-24.04, Release) / 🧪 Test
🔇 Additional comments (1)
.docfx/docfx.json (1)

15-15: Correct framework alignment for DocFX metadata generation.

The TargetFramework update to net10.0 is correct and consistent with the project-wide .NET 10 upgrade. DocFX will now generate API documentation using .NET 10 metadata.


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 13, 2025 15:51
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 upgrades the Unitify project to version 10.0.0, adding support for .NET 10 while removing .NET 8 support. The changes modernize the codebase with updated dependencies, CI/CD workflows, and comprehensive documentation updates.

Key Changes:

  • Target framework migration from .NET 8/9 to .NET 9/10 across all projects
  • Dependency upgrades including migration to xunit v3 and latest test SDK versions
  • CI/CD pipeline modernization with updated workflow versions and adjusted job dependencies

Reviewed Changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
testenvironments.json Updates Docker test runner image to support .NET 10
test/Codebelt.Unitify/*.cs (8 files) Removes unused Xunit.Abstractions imports as part of xunit v3 migration
README.md Adds detailed project information highlighting .NET 9/10 support and LTS/STS targeting strategy
Directory.Packages.props Upgrades all package dependencies to latest versions including xunit v3 packages
Directory.Build.props Updates target frameworks to net10.0/net9.0 and configures xunit v3 test infrastructure
CHANGELOG.md Adds version 10.0.0 release notes documenting .NET 10 adoption
.nuget/Codebelt.Unitify/README.md Updates package documentation to reflect .NET 9/10 support
.nuget/Codebelt.Unitify/PackageReleaseNotes.txt Adds release notes for version 10.0.0 with platform changes
.github/workflows/pipelines.yml Updates reusable workflow references to v3 and adjusts job dependencies
.docfx/includes/availability-modern.md Updates availability statement to .NET 10 and .NET 9
.docfx/includes/availability-default.md Updates availability statement to include .NET 10
.docfx/Dockerfile.docfx Updates nginx and docfx base image versions

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

@codecov
Copy link

codecov bot commented Nov 13, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.33%. Comparing base (f57b715) to head (d63a7e9).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #14   +/-   ##
=======================================
  Coverage   83.33%   83.33%           
=======================================
  Files          19       19           
  Lines         666      666           
  Branches       51       51           
=======================================
  Hits          555      555           
  Misses        110      110           
  Partials        1        1           

☔ View full report in Codecov by Sentry.
📢 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.

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: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f57b715 and e26c9ad.

📒 Files selected for processing (19)
  • .docfx/Dockerfile.docfx (1 hunks)
  • .docfx/includes/availability-default.md (1 hunks)
  • .docfx/includes/availability-modern.md (1 hunks)
  • .github/workflows/pipelines.yml (4 hunks)
  • .nuget/Codebelt.Unitify/PackageReleaseNotes.txt (1 hunks)
  • .nuget/Codebelt.Unitify/README.md (1 hunks)
  • CHANGELOG.md (1 hunks)
  • Directory.Build.props (3 hunks)
  • Directory.Packages.props (1 hunks)
  • README.md (1 hunks)
  • test/Codebelt.Unitify/BaseUnitTest.cs (0 hunks)
  • test/Codebelt.Unitify/BinaryPrefixTest.cs (0 hunks)
  • test/Codebelt.Unitify/BitStorageTest.cs (0 hunks)
  • test/Codebelt.Unitify/ByteStorageTest.cs (0 hunks)
  • test/Codebelt.Unitify/DecimalPrefixTest.cs (0 hunks)
  • test/Codebelt.Unitify/PrefixUnitExtensionsTest.cs (0 hunks)
  • test/Codebelt.Unitify/UnitFactoryTest.cs (0 hunks)
  • test/Codebelt.Unitify/UnitTest.cs (0 hunks)
  • testenvironments.json (1 hunks)
💤 Files with no reviewable changes (8)
  • test/Codebelt.Unitify/UnitFactoryTest.cs
  • test/Codebelt.Unitify/PrefixUnitExtensionsTest.cs
  • test/Codebelt.Unitify/BitStorageTest.cs
  • test/Codebelt.Unitify/UnitTest.cs
  • test/Codebelt.Unitify/DecimalPrefixTest.cs
  • test/Codebelt.Unitify/BaseUnitTest.cs
  • test/Codebelt.Unitify/ByteStorageTest.cs
  • test/Codebelt.Unitify/BinaryPrefixTest.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). (2)
  • GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
  • GitHub Check: call-test (windows-2022, Release) / 🧪 Test
🔇 Additional comments (18)
.docfx/includes/availability-modern.md (1)

1-1: Documentation updated correctly to reflect .NET 10 and .NET 9 support.

.docfx/includes/availability-default.md (1)

1-1: Documentation updated to reflect .NET 10 as primary target while maintaining .NET 9 and .NET Standard 2.0.

.nuget/Codebelt.Unitify/README.md (1)

5-6: Package README updated to reflect modern .NET 9 and .NET 10 support.

.docfx/Dockerfile.docfx (1)

1-1: Docker base image versions updated to latest patches.

Patch-level updates for NGINX (1.29.3) and docfx (2.78.4) maintain compatibility while providing security and bug fixes.

Also applies to: 6-6

testenvironments.json (1)

12-12: Test environment updated to include .NET 10 support alongside .NET 8 and 9.

Docker test runner image now includes .NET 10.0.100, enabling CI/CD testing across the full target framework range.

CHANGELOG.md (1)

10-15: Changelog entry for v10.0.0 correctly documents major release.

Release notes clearly communicate .NET 10 LTS adoption and the versioning strategy of targeting current LTS/STS versions. Proper format and placement within changelog.

README.md (3)

7-17: About section added with clear messaging on .NET 9/10 support and versioning strategy.

New section establishes project focus and targets modern LTS/STS/.NET versions. Consistent formatting and messaging.


18-20: Documentation section header added with link to DocFx-generated documentation.

Clean addition providing users direct access to comprehensive API documentation.


26-28: Package information table added for quick reference.

Table provides version, stability, and download metrics via shields.io badges. Improves discoverability of NuGet package.

.github/workflows/pipelines.yml (4)

30-30: GitHub Actions workflow references upgraded from v2 to v3.

Build, pack, test, sonarcloud, and nuget-push workflows modernized with version bumps. Upgrades align with .NET 10 and xunit.v3 migration.

Verify no breaking changes in the v2→v3 workflow upgrades by checking the release notes for each repository:

  • codebeltnet/jobs-dotnet-build
  • codebeltnet/jobs-dotnet-pack
  • codebeltnet/jobs-dotnet-test
  • codebeltnet/jobs-sonarcloud
  • codebeltnet/jobs-nuget-push

Also applies to: 42-42, 55-55, 66-66, 92-92


60-60: Build flag added to test job with xUnitv3 comment.

The build: true flag correctly addresses the xunit.v3 migration requirement mentioned in PR objectives, ensuring test projects are rebuilt before execution.


81-86: CodeQL job disabled and deploy dependencies updated accordingly.

CodeQL workflow commented out as noted in PR objectives. Deploy job dependencies correctly updated to remove codeql reference, maintaining logical job ordering.

Also applies to: 91-91


76-76: Verify whether this custom codecov wrapper action comparison is valid.

The review comment conflates the official codecov/codecov-action (which is recommended at @v5) with codebeltnet/jobs-codecov, which is a separate third-party wrapper action. These are different projects with independent versioning—the v2→v3 upgrade pattern mentioned for other workflows does not necessarily apply to the custom action being used here. Without access to the codebeltnet/jobs-codecov repository and release history, the assumption that v1 is outdated or unmaintained cannot be verified.

Clarify with the team: Is v1 of the codebeltnet wrapper still compatible with current codecov service requirements, or should this be upgraded as part of the workflow modernization?

Directory.Build.props (4)

18-18: LGTM! Target framework updated correctly.

The target framework change from net9.0;net8.0 to net10.0;net9.0 aligns with the PR objectives to support .NET 10 LTS and drop .NET 8 LTS.


51-51: LGTM! Test project targets aligned with library targets.

The test project target frameworks correctly match the non-test projects, ensuring tests run against all supported .NET versions.


70-71: LGTM! xunit v3 package references updated.

The package references have been correctly updated to use xunit.v3 equivalents, aligning with the test framework migration.


55-55: Configuration correctly supports xunit v3 migration.

The OutputType=Exe setting is required for xunit.net v3 test projects. The UseMicrosoftTestingPlatformRunner=true property is optional but appropriately set for Microsoft Testing Platform integration. Both settings are correctly configured for xunit v3.

Also applies to: 65-65

.nuget/Codebelt.Unitify/PackageReleaseNotes.txt (1)

1-8: LGTM! Release notes clearly document version 10.0.0 changes.

The release notes accurately reflect the major version upgrade, including the addition of .NET 10 LTS support, removal of .NET 8 LTS, and dependency upgrades. The format is consistent with existing entries.

Comment on lines +6 to +8
<PackageVersion Include="Codebelt.Extensions.Xunit.App" Version="11.0.0" />
<PackageVersion Include="Cuemon.Core" Version="10.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify updated package versions are current and compatible.

The package upgrades include major version bumps for Codebelt.Extensions.Xunit.App (10.0.7 → 11.0.0) and Cuemon.Core (9.0.10 → 10.0.0), which align with the .NET 10 upgrade. Please verify these versions are the latest stable releases compatible with .NET 10.


🌐 Web query:

What are the latest versions of Codebelt.Extensions.Xunit.App, Cuemon.Core, and Microsoft.NET.Test.Sdk packages compatible with .NET 10?

💡 Result:

  • Codebelt.Extensions.Xunit.App — 10.0.4. [NuGet]. [1]
  • Cuemon.Core — 9.0.9 (stable); there are 10.0.0 preview/rc builds available (pre-release). [2][3]
  • Microsoft.NET.Test.Sdk — 18.0.1 (latest; lists net10 compatibility). [4]

Sources:
[1] Codebelt.Extensions.Xunit.App NuGet page (version 10.0.4). (nuget.org)
[2] Cuemon.Core NuGet page (version 9.0.9). (nuget.org)
[3] Cuemon preview/rc info (10.0.0-preview / rc listings). (nugetmusthaves.com)
[4] Microsoft.NET.Test.Sdk NuGet page (18.0.1; net10 compatibility). (nuget.org)

Would you like me to provide the exact PackageReference lines for each?

Citations:


Correct package versions: critical mismatches detected.

The versions specified do not match the latest stable releases on NuGet:

  • Codebelt.Extensions.Xunit.App 11.0.0 does not exist as a stable release; the latest stable is 10.0.4
  • Cuemon.Core 10.0.0 is only available as pre-release/RC; the latest stable is 9.0.9
  • Microsoft.NET.Test.Sdk 18.0.1 is correct and supports .NET 10

Update Directory.Packages.props lines 6–8 to use stable versions: Codebelt.Extensions.Xunit.App 10.0.4 and Cuemon.Core 9.0.9.

🤖 Prompt for AI Agents
In Directory.Packages.props around lines 6 to 8, the package versions are
incorrect: replace Codebelt.Extensions.Xunit.App 11.0.0 with the stable 10.0.4
and replace Cuemon.Core 10.0.0 (pre-release) with the stable 9.0.9; leave
Microsoft.NET.Test.Sdk at 18.0.1. Update the Version attributes accordingly so
all referenced packages point to the specified stable releases.

Comment on lines +12 to +13
<PackageVersion Include="xunit.v3" Version="3.1.0" />
<PackageVersion Include="xunit.v3.runner.console" Version="3.2.0" />
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify xunit v3 versions are current.

The migration from xunit v2 to xunit v3 is a significant framework upgrade. The package references have been correctly updated to use xunit.v3 (3.1.0) and xunit.v3.runner.console (3.2.0). Please verify these are the latest stable v3 releases.


🌐 Web query:

What are the latest stable versions of xunit.v3 and xunit.v3.runner.console packages?

💡 Result:

As of November 13, 2025:

  • xunit.v3 — 3.2.0. [1]
  • xunit.v3.runner.console — 3.2.0. [2]

Sources:
[1] NuGet: xunit.v3 (package page).
[2] NuGet: xunit.v3.runner.console (package page).


Update xunit.v3 to 3.2.0.

The latest stable releases are xunit.v3 3.2.0 and xunit.v3.runner.console 3.2.0. The runner console package is correctly at 3.2.0, but xunit.v3 should be updated from 3.1.0 to 3.2.0 to align with the latest release.

🤖 Prompt for AI Agents
In Directory.Packages.props around lines 12 to 13, xunit.v3 is pinned to
Version="3.1.0" while xunit.v3.runner.console is at 3.2.0; update the xunit.v3
PackageVersion entry to Version="3.2.0" so both packages reference the same
latest stable 3.2.0 release.

@sonarqubecloud
Copy link

@gimlichael gimlichael merged commit fd87a72 into main Nov 13, 2025
15 checks passed
@gimlichael gimlichael deleted the v10.0.0/launch branch November 13, 2025 16:22
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