Skip to content

Bump NuGet.Packaging to 7.9.0 to match the SDK's NuGet version - #639

Draft
ChrisonSimtian wants to merge 1 commit into
Fallout-build:mainfrom
ChrisonSimtian:fix/nuget-packaging-7x
Draft

Bump NuGet.Packaging to 7.9.0 to match the SDK's NuGet version#639
ChrisonSimtian wants to merge 1 commit into
Fallout-build:mainfrom
ChrisonSimtian:fix/nuget-packaging-7x

Conversation

@ChrisonSimtian

@ChrisonSimtian ChrisonSimtian commented Aug 16, 2026

Copy link
Copy Markdown
Collaborator

⚠️ Breaking change — NuGet 7.x does not support netstandard2.0. Taking this bump means Fallout.Tooling and Fallout.Tooling.Generator stop supporting netstandard2.0, and .NET Framework support goes with it. Consumers on those targets must move to net10.0.

Held for the next major. This PR is labelled target/vNext and stays open until we cut that release. See the direction comment on #638.

The .NET 10 SDK loads NuGet.Frameworks 7.9.0.0 into MSBuild, but the pinned NuGet.Packaging 6.14.3 loaded NuGet.Frameworks 6.14.3 into the same build-host process, so every ./build.sh run fails at Compile once CI moved from SDK 10.0.302 to 10.0.400.

What changed

  • NuGet.Packaging 6.14.3 → 7.9.0 in Directory.Packages.props. One line, no source changes.

Why

NuGet 7.0 only removed APIs that were already marked obsolete. This repo uses NuspecReader, PackageArchiveReader, PackageFolderReader, VersionRange, NuGetVersion and NuGetFramework. None of them changed.

Nothing in the repository caused the break. global.json pins SDK 10.0.100 with rollForward: latestMinor, so CI takes whatever the runner image ships.

Verification

  • ./build.sh Compile fails on main and succeeds on this branch, on SDK 10.0.400.
  • Fallout.Migrate.Analyzers.Specs: 14/14 pass.
  • Fallout.Build.Specs: 239/242 pass. The 3 GitRepositoryWorktreeSpecs failures are pre-existing and environment-specific — they assert on the git remote identity and fail identically at 6.14.3 in a fork checkout.

Note on the netstandard2.0 targets

Fallout.Tooling (net10.0;netstandard2.0) and Fallout.Tooling.Generator (netstandard2.0) currently still declare those targets. With this bump they restore .NET Framework assets instead and emit NU1701 warnings. Actually removing the targets is separate work for the same major.

Part of #638

The .NET 10 SDK loads NuGet.Frameworks 7.9.0.0 into MSBuild. The pinned
NuGet.Packaging 6.14.3 loaded NuGet.Frameworks 6.14.3 into the same build-host
process, so every ./build.sh run failed at Compile once CI moved from SDK
10.0.302 to 10.0.400:

  InvalidProjectFileException: The expression
  "[MSBuild]::GetTargetFrameworkIdentifier(net10.0)" cannot be evaluated.
  Could not load file or assembly 'NuGet.Frameworks, Version=7.9.0.0'.

NuGet 7.0 only removed APIs that were already obsolete. This repo uses
NuspecReader, PackageArchiveReader, PackageFolderReader, VersionRange,
NuGetVersion and NuGetFramework, none of which changed.

NuGet 7.x drops netstandard2.0. Fallout.Tooling and Fallout.Tooling.Generator
still target it, so those legs now restore .NET Framework assets and emit
NU1701. That is a warning, not an error, and is tracked in the issue.

Closes Fallout-build#638

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ChrisonSimtian ChrisonSimtian added bug Something isn't working target/vCurrent Targets the current version target/vNext Targets the next calendar-version breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. and removed bug Something isn't working target/vCurrent Targets the current version labels Aug 16, 2026
@ChrisonSimtian

Copy link
Copy Markdown
Collaborator Author

Note for whoever cuts the next major and merges this.

#640 pins the SDK to the 10.0.3xx feature band as a temporary measure, because this PR could not be merged. It is labelled bug + target/vCurrent on purpose, so it appears in the release notes if we ship another minor release first.

When this PR lands as part of a major release, two things need doing:

  • Add skip-changelog to Pin the SDK to the 10.0.3xx feature band to stop unattended roll-forward #640. In a major release that also carries this fix, the pin is internal housekeeping and should not appear in the notes.
  • Revisit the pin itself. Once NuGet.Packaging is on 7.x, the 10.0.3xx restriction is no longer needed, and the roll-forward policy should be chosen deliberately rather than left as the workaround setting.

ChrisonSimtian added a commit that referenced this pull request Aug 19, 2026
global.json requested 10.0.100 with rollForward: latestMinor, so CI took
whatever SDK the runner image shipped. The image moved to 10.0.400, which
loads NuGet.Frameworks 7.9.0.0 into MSBuild. That conflicts with the pinned
NuGet.Packaging 6.14.3 and breaks every ./build.sh run at Compile.

The last green run used 10.0.302, so this pins to that feature band.
latestPatch still accepts 10.0.3xx patches but will not jump to 10.0.4xx.

This is a temporary measure. The real fix is bumping NuGet.Packaging to 7.x
(#639), which is a breaking change held for the next major because NuGet 7.x
drops netstandard2.0. Until that lands, the pin keeps CI green and stops the
runner image from changing the toolchain without us noticing.

Contributors need a 10.0.3xx SDK installed. CI installs it automatically via
actions/setup-dotnet reading global.json.

Part of #638

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@IT-VBFK

IT-VBFK commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Breaking change — NuGet 7.x does not support netstandard2.0. Taking this bump means Fallout.Tooling and Fallout.Tooling.Generator stop supporting netstandard2.0, and .NET Framework support goes with it. Consumers on those targets must move to net10.0.

Does this mean, that building a .NET Framework app stops working or does this only affect the build project?

If former is true: This would then potentially lock out quite a number of users (including me for one project: build project targets .NET10.0 and builds a .NET Framework 4.8 app)
If latter is true: can this then be a "real" (meaning serious) breaking change? Given, that NUKE in its past only worked out, if the build project targeted the .NET (core) version the major part told. Any other constallation has never worked for me, e.g. build project is .NET8.0 and production app was .NET9.0 -> never ran.

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

Labels

breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. target/vNext Targets the next calendar-version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants