Skip to content

Add .NET 10 support#822

Merged
christianhelle merged 13 commits into
mainfrom
net10
Nov 19, 2025
Merged

Add .NET 10 support#822
christianhelle merged 13 commits into
mainfrom
net10

Conversation

@christianhelle

@christianhelle christianhelle commented Nov 19, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Added support for .NET 10 SDK and target framework.
  • Chores

    • Expanded CI/CD workflows to build and test against .NET 8, 9, and 10.
    • Modernized test project structure and build configuration files.
    • Updated test scripts to reflect new build targets and project organization.

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings November 19, 2025 20:41
@christianhelle christianhelle added enhancement New feature, bug fix, or request .NET Pull requests that contain changes to .NET code CI/CD Build workflow labels Nov 19, 2025
@coderabbitai

coderabbitai Bot commented Nov 19, 2025

Copy link
Copy Markdown
Contributor

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

The pull request adds support for .NET 10 (net10.0) across CI workflows and project configuration, while migrating solution files from legacy .sln format to the newer .slnx format. The Refitter.csproj TargetFrameworks is updated to include net10.0, GitHub Actions workflows are expanded to test against .NET 8.0.x, 9.0.x, and 10.0.x, and test infrastructure including scripts and project files are updated accordingly.

Changes

Cohort / File(s) Change Summary
GitHub Actions Workflow Matrices
.github/workflows/build.yml, codecov.yml, msbuild.yml, production-tests.yml, regression-tests.yml, release-template.yml, smoke-tests.yml
Expanded dotnet-version matrices to include 10.0.x alongside existing 8.0.x and/or 9.0.x versions. Single-version configurations replaced with multi-version matrix strategies.
Project Configuration
src/Refitter/Refitter.csproj
Added net10.0 to TargetFrameworks, extending support from net8.0;net9.0 to net8.0;net9.0;net10.0.
Solution File Migration (Deleted)
test/ConsoleApp/ConsoleApp.sln, test/ConsoleApp/ConsoleApp.Core.sln
Removed legacy Visual Studio solution files including all project entries and global configuration sections.
Solution File Migration (Added)
test/ConsoleApp/ConsoleApp.slnx, test/ConsoleApp/ConsoleApp.Core.slnx
Introduced new solution format (.slnx) files with project references for target frameworks (includes Net10 project in Core variant).
Test Project Files
test/ConsoleApp/Directory.Build.props
Removed System.Runtime.Serialization.Primitives (4.3.0) and System.Text.Json (10.0.0) NuGet package references.
Test Target Framework Updates
test/ConsoleApp/Net10/Net10.csproj, test/ConsoleApp/Net7/Net7.csproj
Net10.csproj framework changed from net6.0 to net10.0; Net7.csproj project file deleted entirely.
Test Scripts
test/smoke-tests.bat, test/smoke-tests.ps1
Updated solution file references from .sln to .slnx variants; modified build targets to net10.0; adjusted dotnet build command flags for consistency; reorganized PowerShell function signatures.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Solution file migration: Verify that .slnx files correctly reference all intended projects and that legacy .sln files are no longer needed for any workflows or documentation
  • Script updates (smoke-tests.ps1, smoke-tests.bat): Confirm that path changes, framework references (net6.0 → net10.0), and new build flags are applied consistently across all build invocations
  • Removed dependencies in Directory.Build.props: Validate that removal of System.Text.Json and System.Runtime.Serialization.Primitives does not introduce compilation or runtime issues across test projects
  • Workflows: Spot-check that .NET 10.0.x matrix additions are syntactically correct and will execute without errors in CI environment

Possibly related PRs

  • PR #690: Adds .NET 9.0.x support to CI workflows and TargetFrameworks in a similar pattern; represents the prior version support expansion that this PR extends with .NET 10 support.

Poem

🐰 A rabbit hops through versions ten,
From eight and nine, now here again,
Solution files in new attire,
Workflows test what all require—
Dot-Net thrives in .slnx delight! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 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.
Title check ✅ Passed The title 'Add .NET 10 support' directly and clearly summarizes the main change across all modified files—expanding support for .NET 10 SDK versions in workflows and target frameworks.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch net10

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.

@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds .NET 10.0 as a target framework for the Refitter CLI tool and updates the test infrastructure to support it. The changes include updating the main project file, modernizing solution files from .sln to .slnx format, updating CI/CD workflows, and adjusting test scripts.

Key changes:

  • Added net10.0 to the target frameworks in Refitter.csproj alongside existing net8.0 and net9.0
  • Migrated test solution files from traditional .sln to XML-based .slnx format
  • Updated most GitHub Actions workflows to install .NET 10.0 SDK alongside 8.0 and 9.0
  • Modified smoke test scripts to use .NET 10.0 for publishing and updated solution file references
  • Removed obsolete Net7 project and cleaned up unused package references

Reviewed Changes

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

Show a summary per file
File Description
src/Refitter/Refitter.csproj Added net10.0 to target frameworks
test/ConsoleApp/Net10/Net10.csproj Updated target framework from net6.0 to net10.0
test/ConsoleApp/Net7/Net7.csproj Removed obsolete Net7 project
test/ConsoleApp/ConsoleApp.slnx New XML solution file including Net10 project
test/ConsoleApp/ConsoleApp.Core.slnx New XML solution file for .NET Core projects only
test/ConsoleApp/ConsoleApp.sln Removed traditional solution file
test/ConsoleApp/ConsoleApp.Core.sln Removed traditional solution file
test/ConsoleApp/Directory.Build.props Removed unused package references
test/smoke-tests.ps1 Updated to publish with net10.0 and reference .slnx files
test/smoke-tests.bat Updated solution file references to .slnx format
.github/workflows/smoke-tests.yml Added .NET 10.0 SDK setup
.github/workflows/release-template.yml Added .NET 10.0 SDK setup
.github/workflows/regression-tests.yml Added .NET 10.0 SDK setup
.github/workflows/production-tests.yml Added .NET 10.0 SDK setup
.github/workflows/msbuild.yml Added .NET 10.0 SDK setup
.github/workflows/codecov.yml Added .NET 10.0 SDK setup and formatting fix
.github/workflows/build.yml Added .NET 10.0 SDK setup

Comment thread test/smoke-tests.ps1
Comment on lines +11 to +12
function ThrowOnNativeFailure
{

Copilot AI Nov 19, 2025

Copy link

Choose a reason for hiding this comment

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

[nitpick] The formatting changes throughout this file (moving opening braces to separate lines) appear to be unrelated to the stated purpose of adding .NET 10 support. These style changes should ideally be in a separate PR focused on code formatting to keep the changes focused and easier to review.

Copilot uses AI. Check for mistakes.
@codecov

codecov Bot commented Nov 19, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.14%. Comparing base (6ad059a) to head (03c5d4c).
⚠️ Report is 16 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #822   +/-   ##
=======================================
  Coverage   95.14%   95.14%           
=======================================
  Files          23       23           
  Lines        1938     1938           
  Branches      319      319           
=======================================
  Hits         1844     1844           
  Misses         48       48           
  Partials       46       46           
Flag Coverage Δ
unittests 95.14% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@christianhelle christianhelle changed the title Add .NET 10 to target frameworks Add .NET 10 support Nov 19, 2025
@christianhelle
christianhelle merged commit cda6113 into main Nov 19, 2025
18 checks passed
@christianhelle
christianhelle deleted the net10 branch November 19, 2025 21:12
hwinther pushed a commit to hwinther/test that referenced this pull request Dec 18, 2025
Updated [refitter](https://github.com/christianhelle/refitter) from
1.7.0 to 1.7.1.

<details>
<summary>Release notes</summary>

_Sourced from [refitter's
releases](https://github.com/christianhelle/refitter/releases)._

## 1.7.1

### Implemented enhancements

- Improved handling of optional parameters
[\#​448](christianhelle/refitter#448) by
@​christianhelle
- Allow omitting certain operation headers \#​840
[\#​841](christianhelle/refitter#841) by
@​kmc059000
- Migrate unit tests from xUnit to TUnit
[\#​830](christianhelle/refitter#830) by
@​christianhelle
- Refit v9.0.2
[\#​829](christianhelle/refitter#829)
- Add .NET 10 support
[\#​822](christianhelle/refitter#822)
([christianhelle](https://github.com/christianhelle))
- Fix missing XML doc for CancellationToken
[\#​819](christianhelle/refitter#819) by
@​christianhelle
- Fix incorrect casing on multi-part form data parameters
[\#​806](christianhelle/refitter#806) by
@​christianhelle
- Optional parameters with default values
[\#​803](christianhelle/refitter#803) by
@​christianhelle
- Asana API specs strange naming
[\#​364](christianhelle/refitter#364) by
@​christianhelle

### Fixed bugs

- Using cancellation tokens with xml doc comments plus
TreatWarningsAsErrors and documentation file
[\#​817](christianhelle/refitter#817)
- Multipart form data parameters wrong casing
[\#​805](christianhelle/refitter#805)
- Use of non generic `JsonStringEnumConverter` prohibits usage of
Json-SourceGenerationContext
[\#​778](christianhelle/refitter#778)
- SourceGenerator 1.5 and newer causes build error with Visual Studio
2022 [\#​627](christianhelle/refitter#627)
- Fix string escaping, null safety, and numeric literals in optional
parameter default values
[\#​804](christianhelle/refitter#804)
- Fix typo in class name and Spectre.Console markup escaping issue
[\#​828](christianhelle/refitter#828)

### Merged pull requests

- docs: add kmc059000 as a contributor for ideas, and code
[\#​842](christianhelle/refitter#842)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- Bump actions/upload-artifact from 5 to 6
[\#​838](christianhelle/refitter#838)
([dependabot[bot]](https://github.com/apps/dependabot))
- Update dependency TUnit to 1.5.37
[\#​836](christianhelle/refitter#836)
([renovate[bot]](https://github.com/apps/renovate))
- Update dotnet monorepo
[\#​834](christianhelle/refitter#834)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency TUnit to 1.5.6
[\#​833](christianhelle/refitter#833)
([renovate[bot]](https://github.com/apps/renovate))
- Update dependency TUnit to 1.5.0
[\#​832](christianhelle/refitter#832)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency spectre.console.cli to 0.53.1
[\#​827](christianhelle/refitter#827)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency polly to 8.6.5
[\#​826](christianhelle/refitter#826)
([renovate[bot]](https://github.com/apps/renovate))
- Bump actions/checkout from 5 to 6
[\#​825](christianhelle/refitter#825)
([dependabot[bot]](https://github.com/apps/dependabot))
- chore\(deps\): update nswag monorepo to 14.6.3
[\#​824](christianhelle/refitter#824)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency microsoft.build.utilities.core to v18
[\#​821](christianhelle/refitter#821)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency swashbuckle.aspnetcore to 10.0.1
[\#​820](christianhelle/refitter#820)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add karoberts as a contributor for bug
[\#​818](christianhelle/refitter#818)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency swashbuckle.aspnetcore to v10
[\#​816](christianhelle/refitter#816)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency microsoft.extensions.http.resilience
to v10 [\#​815](christianhelle/refitter#815)
([renovate[bot]](https://github.com/apps/renovate))
- Update Spectre.Console.Cli to 0.53.0
[\#​814](christianhelle/refitter#814)
([Copilot](https://github.com/apps/copilot-swe-agent))
- chore\(deps\): update dotnet monorepo to v10 \(major\)
[\#​813](christianhelle/refitter#813)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency microsoft.net.test.sdk to 18.0.1
[\#​808](christianhelle/refitter#808)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add mhartmair-cubido as a contributor for bug
[\#​807](christianhelle/refitter#807)
([allcontributors[bot]](https://github.com/apps/allcontributors))

### New Contributors
* @​kmc059000 made their first contribution in
christianhelle/refitter#841

Full Changelog:
christianhelle/refitter@1.7.0...1.7.1

Commits viewable in [compare
view](christianhelle/refitter@1.7.0...1.7.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=refitter&package-manager=nuget&previous-version=1.7.0&new-version=1.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD Build workflow enhancement New feature, bug fix, or request .NET Pull requests that contain changes to .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants