v0.2.0: multi-target net8.0 alongside net10.0#16
Merged
Conversation
Retarget the package from net10.0-only to net8.0;net10.0 so .NET 8 CLIs can consume it directly. No API or behaviour changes — every dependency already ships net8.0 assets and no net9+-only APIs are used. - src csproj: TargetFramework -> TargetFrameworks net8.0;net10.0; bump 0.1.10 -> 0.2.0 - Directory.Build.props: drop the singular TargetFramework so TargetFrameworks is honoured (tests/demo declare their own TFM) - CHANGELOG: 0.2.0 entry Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Retargets the package from net10.0-only to
net8.0;net10.0so .NET 8 CLIs can consume it directly instead of being forced onto the latest runtime. Shipped as a minor bump: 0.1.10 → 0.2.0.No API or behaviour changes — the public surface is identical across both targets.
Why net8.0;net10.0 (not the full Spectre
netstandard2.0mirror)ns2.0 was assessed and rejected. Its surface-API gaps (guard helpers,
OperatingSystem.Is*,Convert.ToHexString,record/init, collection expressions) polyfill cleanly, butArchiveExtractorusesSystem.Formats.Tar.TarFile(net7+) andZipFile.ExtractToDirectory(…, overwriteFiles: true)(net6+) to unpack downloaded release archives — no polyfill exists. Supporting ns2.0 would mean adding SharpZipLib and forking that security-sensitive path under#if NETSTANDARD2_0, untestable locally, for an implausible (.NET Framework / Unity) audience.net8.0;net10.0reaches every realistic consumer with zero source changes.Verified clean for net8: all deps ship
net8.0assets, and there is noSystem.Threading.Lock(the usual lone net8 blocker).Changes
src/…csproj—TargetFramework→TargetFrameworks net8.0;net10.0;Version0.1.10 → 0.2.0. No conditionalPackageReferences needed.Directory.Build.props— dropped the singular<TargetFramework>(it would make MSBuild silently ignoreTargetFrameworks). Safe:tests/demoeach declare their own TFM.CHANGELOG.md—## [0.2.0]entry.Spectre floors untouched (
Spectre.Console0.56.0 /Spectre.Console.Cli0.55.0).Verification
dotnet build -c Release— both TFMs compile, 0 warnings / 0 errors (TreatWarningsAsErrors on).dotnet test— 196/196 pass (net10 runtime; net8 compile-verified, as only the net10 runtime is installed locally).dotnet pack—.nupkgcontains bothlib/net8.0/andlib/net10.0/.ProjectReferenceconsumer) builds clean.🤖 Generated with Claude Code