Plan an upgrade
Orientation
Choose the package version in your project or lock file as the source and the version you intend to install as the target. Follow every boundary shown, in order. This is a compatibility path, not a list of every feature or fix.
- 2.14.1 to 3.0.1: Apply the Humanizer 3 source and package migration
Consolidate namespaces, replace removed APIs, update framework/tooling expectations, and rebuild all consumers. - 3.0.1 to 3.0.8: Take the 3.0 patch-line compatibility restorations
Remove workarounds for restored quantity overloads and move to the Roslyn-versioned analyzer assets. - 3.0.8 to 3.0.10: Take the analyzer fallback packaging fix
Upgrade when older or non-version-aware build hosts load duplicate analyzer variants.
3.0.8 is intentionally a boundary. It restored source compatibility and
introduced Roslyn-versioned analyzer assets that are absent from 3.0.1;
3.0.10 then corrected fallback selection for older build hosts.
The chooser intentionally stops at latest stable 3.0.10.
Example
For an upgrade from 2.13.14 to 3.0.10, the chooser produces this
illustrative ordered chain:
2.13.14 -> 2.14.1 -> 3.0.1 -> 3.0.8 -> 3.0.10
Complete one guide and commit its mechanical changes before starting the next. That keeps package, compiler, and behavioral failures attributable to one boundary.
Pitfall
Do not jump straight from a 2.x package to the latest package and then treat every compiler error as a namespace error. Humanizer 3 also removes APIs, changes generic enum signatures and formatter extensibility, changes package assets, and includes patch-line compatibility restorations.
Version notes
The supported source and target list follows the documentation manifest.
3.0.8 is selectable here because published package contents and tagged source
show remediation distinct from both 3.0.1 and 3.0.10. It remains
a separate compatibility boundary even though the releases share one
major/minor line.