Repository navigation
VONK-10067: Add net10.0 target framework and convert to slnx - #703
Merged
Merged
Conversation
- Libraries target net8.0;net10.0;netstandard2.1 (additive, non-breaking). Tests already target net10.0 only. - Firely.Fhir.Validation gets a PublicAPI/net10.0 file: like net8.0, net10.0 generates the covariant Clone methods of the InvariantValidator records. - ChildrenValidator.TryGetValue used `#if NET8_0`, so on net10.0 it fell back to the netstandard2.1 signature without [MaybeNullWhen(false)] (CS8601 as an error). Use NET8_0_OR_GREATER. - Benchmarks (the only Exe project) moves to net10.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6.2.0 is the first Firely.Fhir.Packages release with a net10.0 target. The Firely .NET SDK is already at 6.6.0 on develop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…slnx Generated with `dotnet sln migrate`; the project set is unchanged. The pipeline now passes the solution file to the shared build template explicitly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The framework, API, solution, dependency, and pipeline changes are consistent and no unresolved defects were identified.
Review effort: Balanced
Findings: None
What changed in this PR
Adds .NET 10 support and migrates the repository to the .slnx solution format.
Changes:
- Adds
net10.0library and benchmark targets. - Adds .NET 10 API tracking and correct nullable annotations.
- Updates dependencies, solution format, and CI configuration.
| File | Description |
|---|---|
test/Benchmarks/Benchmarks.csproj |
Targets benchmarks at .NET 10. |
src/Firely.Fhir.Validation/PublicAPI/net10.0/PublicAPI.Unshipped.txt |
Defines the .NET 10 public API surface. |
src/Firely.Fhir.Validation/Impl/ChildrenValidator.cs |
Applies nullable annotation to .NET 8 and later. |
src/Firely.Fhir.Validation/Firely.Fhir.Validation.csproj |
Documents framework-specific API behavior. |
Firely.Validator.API.slnx |
Introduces the migrated 16-project solution. |
Firely.Validator.API.sln |
Removes the legacy solution format. |
firely-validator-api.props |
Adds the .NET 10 library target. |
firely-validator-api-tests.props |
Updates Firely.Fhir.Packages to 6.2.0. |
build/azure-pipelines.yml |
Configures CI to use the .slnx solution. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
mmsmits
enabled auto-merge
October 7, 2026 11:04
mmsmits
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the firely-validator-api part of VONK-10067, the same way as the SDK (firely-net-sdk#3612, released in 6.6.0) and Firely.Fhir.Packages (#223, released in 6.2.0).
What changes
net8.0;net10.0;netstandard2.1. This only adds a target, so it isn't breaking: .NET 8/9 consumers keep thenet8.0assets. Tests already ran on net10.0 only, and stay that way (as agreed with @ewoutkramer for the whole chain).PublicAPI/net10.0.Firely.Fhir.Validationtracks its public API per framework, because theInvariantValidatorrecords generate covariantClonemethods on net8.0 but not on netstandard2.1. net10.0 behaves like net8.0, so its file is a copy of the net8.0 one, and the API analyzers accept it.ChildrenValidator.TryGetValue. It used#if NET8_0, which only matches net8.0 exactly. On net10.0 it fell back to the netstandard2.1 signature without[MaybeNullWhen(false)], which fails the build (CS8601 as an error). NowNET8_0_OR_GREATER. This was the only exact-framework#ifin the repo.Benchmarks, the onlyExeproject, moves tonet10.0.firely-validator-api-tests.props(the hard-coded version, previously 6.1.0). It is the first release with a net10.0 target.FirelySdkVersionwas already 6.6.0 ondevelop..slnx(separate commit).Firely.Validator.API.slnbecomesFirely.Validator.API.slnxviadotnet sln migrate, with the same 16 projects. The pipeline passes the solution file to the shared build template explicitly. The pipeline was already on SDK10.0.x.Verification (local, macOS, SDK 10.0.302)
dotnet build -c Release: 0 errors. The only warning, NU1603 onBenchmarks(Hl7.Fhir.Specification.Data.R46.0.0-rc2 is no longer on the feed), was already there.Firely.Fhir.Validation.Tests314/314Compilation.STU3.Tests176 (+3 skipped)Compilation.R4.Tests504 (+3 skipped)Compilation.R4B.Tests135 (+3 skipped)Compilation.R5.Tests330 (+3 skipped)Hl7.Fhir.Validation.R5.Tests2/2. It isn't in the solution, but CI'stestProjectsglob picks it up.Running the R4 compilation tests rewrites
TestData/issue-165/fhirpkg.lock.json: a new timestamp, andKBV.Basislower-cased by the newer Firely.Fhir.Packages. That side effect is not part of this PR.🤖 Generated with Claude Code