Skip to content

No release since 2.4.5-pre.3 (Oct 12): pack fails package validation (93 errors, CP0016/CP0014/CP0001) after the Polyfill 11.4.5 bump #118

Open

Description

@matt-edmondson

What's wrong

Every CI run on main since the Polyfill 11.4.5 bump (#107, Oct 14) fails in ci / .NET / Analyze & Release at dotnet pack. Package validation (Microsoft.NET.ApiCompat.ValidatePackage.targets(39,5)) reports 93 errors. The latest scheduled run is 41251274153, on dfe79a3.

  • Baseline diffs between lib/net7.0 and lib/net8.0: 45 errors, mostly CP0016 on DeepClone's own types, for example T:ktsu.DeepClone.IDeepCloneable:[T:System.Runtime.CompilerServices.NullableContextAttribute] and T:ktsu.DeepClone.DeepCloneable1<0>:[…NullableAttribute]`
  • Baseline diffs between lib/netstandard2.1 and lib/net5.0: 3 errors
  • Polyfill-type diffs: CP0014 and CP0015 on System.Diagnostics.CodeAnalysis.ExperimentalAttribute (UrlFormat get/set) and on System.Runtime.CompilerServices.DefaultInterpolatedStringHandler, plus 6 × CP0001
  • 3 × "Unnecessary suppressions found": DeepClone/CompatibilitySuppressions.xml no longer matches what Polyfill 11.4.5 emits

The last published release is v2.4.5-pre.3 (2026-10-12). VERSION.md on main reads 2.4.5-pre.4, which never shipped.

Why it matters

Nothing merged since Oct 12 can publish. The next fix to any of the open DeepClone bugs (#89, #90, #96, and the rest) will merge and then silently never reach NuGet.

This is the same failure already tracked in other repos (Containers #123, RunCommand #126, ImGuiProvider #83, CaseConverter #149, SvnToGit #151, Sorting #72, FuzzySearch #128, AppDataStorage #358). DeepClone has no issue for it yet.

Suggested fix

Regenerate the suppression file against the current SDK and Polyfill:

dotnet pack DeepClone/DeepClone.csproj -c Release /p:ApiCompatGenerateSuppressionFile=true

Then commit the updated DeepClone/CompatibilitySuppressions.xml. Before committing, check that the new CP0016 and CP0001 entries on ktsu.DeepClone.* types are only nullable-metadata differences between TFMs and not real API removals. If one is a real removal, fix the API rather than suppress it.

Acceptance criteria

  • dotnet pack -c Release on main succeeds with no ApiCompat errors
  • The next CI run on main publishes a new version to NuGet and creates the GitHub release

Activity

  1. matt-edmondson commented on Nov 1, 2026

    @matt-edmondson
    ContributorAuthor

    Triage

    Notes: The fix in the issue body is right. Pay attention to its caveat: 45 of the 93 errors are CP0016 on DeepClone's own types (IDeepCloneable, DeepCloneable<T>) between net7.0 and net8.0. Before suppressing them, confirm that they are only NullableContextAttribute / NullableAttribute metadata differences. The Polyfill-type diffs (CP0014, CP0015 and CP0001 on ExperimentalAttribute and DefaultInterpolatedStringHandler) are safe to suppress.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions