From 8f7224bac2022559c7c63a8d69bfe1bc3c423a0b Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 19 May 2026 07:58:55 -0400 Subject: [PATCH] Pin .NET SDK to 10.0.204 via global.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Today's nightly build on main failed restoring Installer with NU1004: 'Microsoft.NET.ILLink.Tasks version has changed from [10.0.8, ) to [10.0.7, )'. ILLink.Tasks is bundled with the SDK, so its version tracks whatever SDK the runner image happens to ship. The lockfiles were generated against SDK 10.0.204 (runtime 10.0.8); the runner now ships SDK 10.0.107 (runtime 10.0.7), and `--locked-mode` refuses to proceed against the mismatch. global.json tells the SDK host (and actions/setup-dotnet) to use 10.0.204 or higher within the same major.minor — so CI installs the SDK that matches the lockfile instead of inheriting whatever the runner image came with. Local dev and CI now agree on the SDK version, and the only way to bump it is to update global.json and regenerate lockfiles in the same commit. Verified locally: `dotnet --version` → 10.0.204, `dotnet restore --locked-mode` succeeds. Note: dev's nightly.yml is already on 10.0.x. main's still has the .NET 8.0 leftover but that'll clear on the next dev → main release. Co-Authored-By: Claude Opus 4.7 (1M context) --- global.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 global.json diff --git a/global.json b/global.json new file mode 100644 index 0000000..d7a14ab --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "10.0.204", + "rollForward": "latestFeature", + "allowPrerelease": false + } +}