Skip to content

Drop .NET 8 and test on .NET 11 - #55

Merged
philliphoff merged 1 commit into
mainfrom
claude/dotnet-10-default-runtime-43dfb6
Nov 3, 2026
Merged

philliphoff merged 1 commit into
mainfrom
claude/dotnet-10-default-runtime-43dfb6

Conversation

@philliphoff

Copy link
Copy Markdown
Owner

Summary

.NET 8 reached end of support in November 2026, so the libraries (EncDotNet.Iso8211, EncDotNet.S57, EncDotNet.Noaa) now target net10.0 only. 0.10.0 is the last release that targets .NET 8; this lands in 0.11.0.

  • Target frameworks: the three library projects drop their net8.0;net10.0 override and use net10.0 from the root Directory.Build.props.
  • Package validation: the baseline (0.9.0) still ships a net8.0 build, so PackageValidationBaselineFrameworkToIgnore marks the drop as intentional (otherwise PKV006). Remove it once the baseline is 0.11.0 or later.
  • Trimming: IsTrimmable no longer needs to be limited to the net10.0 build.
  • CI: a new test-net11 job builds with the .NET 10 SDK, then runs the tests on the .NET 11 runtime (DOTNET_ROLL_FORWARD=LatestMajor, prereleases allowed). That's what consumers on .NET 11 run. Drop dotnet-quality: preview once .NET 11 is released.
  • Docs: the READMEs, CONTRIBUTING, getting started, docs index, Copilot instructions and docs/versioning.md now say .NET 10. The versioning page also records the policy of dropping a .NET version when its support ends.

No net11.0 target yet: it only helps once the libraries use a .NET 11-only API, and adding a target framework later isn't a breaking change.

Standards alignment

  • ISO/IEC 8211 (iso8211)
  • S-57 records, topology, updates or exchange sets (s57-enc)
  • Legacy chart viewer, maintenance only (chart-viewer)
  • N/A: build, CI, docs or tooling only

Standard section references cited in code or docs: None.

Tests

  • Added or updated xUnit tests under tests/
  • Test input is built in memory; no real ENC cells are committed
  • dotnet test --configuration Release passes locally

Not run locally: nuget.org was unreachable from the build machine. Restoring from the local package cache was enough to pack EncDotNet.Iso8211 and EncDotNet.S57, which passed package validation against 0.8.1 with the framework ignore in place (and failed with PKV006 without it). EncDotNet.Noaa, the viewer and the unit tests need packages that weren't cached, so CI is the first full run, including the new test-net11 job.

Documentation

  • Updated the affected package's src/<project>/README.md
  • Updated guides under docs/ if user-facing behavior changed
  • New public APIs have XML doc comments
  • docfx docfx.json --warningsAsErrors passes, if docs changed

Dependencies

  • No new NuGet dependencies, OR versions added to
    Directory.Packages.props (not in the .csproj)
  • gh-advisory-database security check run for any new dependency

Breaking changes

Dropping the net8.0 target from EncDotNet.Iso8211, EncDotNet.S57 and EncDotNet.Noaa: consumers on .NET 8 must stay on 0.10.0 or move to .NET 10. No API changes. EncDotNet.S100 is unaffected if it already targets .NET 10.

.NET 8 reached end of support in November 2026, so the libraries now
target net10.0 only. 0.10.0 is the last release that targets .NET 8;
0.11.0 drops it. Package validation is told the drop is intentional
until the baseline moves past 0.10.0, and trimming analysis no longer
needs to be limited to the net10.0 build.

A new CI job runs the net10.0 tests on the .NET 11 runtime, which is
what consumers on .NET 11 run. The docs now say .NET 10.
@philliphoff
philliphoff merged commit 16cf6c0 into main Nov 3, 2026
13 checks passed
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.

1 participant