Skip to content

Multi-target net8.0 and net10.0#4

Merged
StuartMeeks merged 2 commits into
mainfrom
chore/multi-target-net8-net10
Jun 20, 2026
Merged

Multi-target net8.0 and net10.0#4
StuartMeeks merged 2 commits into
mainfrom
chore/multi-target-net8-net10

Conversation

@StuartMeeks

Copy link
Copy Markdown
Owner

Summary

All three provider packages now ship lib/net8.0/ and lib/net10.0/ assets (previously net10.0 only), mirroring the core NextIteration.SpectreConsole.Auth 0.7.0 and Spectre.Console 0.56.0 surfaces. net8.0 consumers can now reference the providers without being forced onto net10.0.

Why not netstandard2.0?

The original goal was netstandard2.0;net8.0;net10.0, but ns2.0 is infeasible: the core NextIteration.SpectreConsole.Auth package ships no ns2.0 asset and can't — its source uses AesGcm, LibraryImport source-gen P/Invoke, and other net8.0+ APIs. A provider can't target a TFM its dependency lacks. net8.0;net10.0 is the right set and exactly matches the core package's v0.7.0.

Changes

  • Directory.Build.props — removed the singular <TargetFramework>net10.0</TargetFramework> (a non-empty singular value makes MSBuild ignore plural <TargetFrameworks> and silently stay single-targeted).
  • src csprojs<TargetFrameworks>net8.0;net10.0</TargetFrameworks>.
  • Directory.Packages.props — core floor raised [0.6.1,1.0.0)[0.7.0,1.0.0) (0.7.0 is the first core release with a net8.0 asset; the next-major cap is unchanged).
  • Versions + CHANGELOG — Adobe 0.2.3→0.2.4, Airtable 0.2.3→0.2.4, SoftwareOne 0.3.3→0.3.4.

Test projects stay net10.0; the shared provider source is validated against both TFMs by the build.

Verification

  • dotnet build -c Release — both TFMs compile, 0 warnings (TreatWarningsAsErrors on).
  • dotnet test155 passed (Adobe 60, Airtable 36, SoftwareOne 59) on net10.0.
  • dotnet pack — each .nupkg contains both lib/net8.0/ and lib/net10.0/; package validation (EnablePackageValidation) passed; nuspec declares net8.0 + net10.0 dependency groups with the [0.7.0,1.0.0) core floor.

Ship lib/net8.0 and lib/net10.0 assets from all three provider packages
(previously net10.0 only), mirroring the core NextIteration.SpectreConsole.Auth
0.7.0 and Spectre.Console 0.56.0 surfaces so net8.0 consumers can reference the
providers without being forced onto net10.0.

- Directory.Build.props: drop singular <TargetFramework> so plural
  <TargetFrameworks> in each csproj is honoured.
- src csprojs: <TargetFrameworks>net8.0;net10.0</TargetFrameworks>.
- Directory.Packages.props: raise core floor to [0.7.0,1.0.0) — 0.7.0 is the
  first core release with a net8.0 asset.
- Bump versions (Adobe/Airtable 0.2.4, SoftwareOne 0.3.4) + CHANGELOG.

netstandard2.0 is not viable: the core package ships no ns2.0 asset and its
net8.0+ surface (AesGcm, LibraryImport P/Invoke) precludes one.

Test projects stay net10.0; the shared source is validated against both TFMs
by the build.
Add the missing version-reference links so every changelog entry heading
(0.2.4, 0.2.3, 0.2.2, and the SoftwareOne 0.3.0 entry) resolves.
@StuartMeeks StuartMeeks merged commit 684396d into main Jun 20, 2026
2 checks passed
@StuartMeeks StuartMeeks deleted the chore/multi-target-net8-net10 branch June 20, 2026 01:30
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