Skip to content

Document the exact .NET SDK version required to build - #136

Merged
Jason Williams (WilliamsJason) merged 1 commit into
mainfrom
jaswill-microsoft-gdk-release-changes
Aug 12, 2026
Merged

Document the exact .NET SDK version required to build#136
Jason Williams (WilliamsJason) merged 1 commit into
mainfrom
jaswill-microsoft-gdk-release-changes

Conversation

@WilliamsJason

Copy link
Copy Markdown
Collaborator

Fixes a documentation bug that makes the build instructions unfollowable.

Problem

README.md told contributors:

  1. Download the .NET 10 SDK or the latest version.

But global.json pins the SDK exactly:

"sdk": { "version": "10.0.203", "rollForward": "disable" }

rollForward: disable permits no roll-forward at all — not even a patch. So or the latest version is precisely what the repository forbids. A contributor who follows the README installs a newer SDK and every dotnet build, dotnet test and dotnet restore in the repo fails with:

Install the [10.0.203] .NET SDK or update [global.json] to match an installed SDK.

CI never hits this, which is why it went unnoticed: Azure Pipelines uses UseDotNet@2 with useGlobalJson: true and the GitHub Actions workflow uses actions/setup-dotnet@v5 with global-json-file: global.json. Both install the pinned SDK on demand. Only humans are affected.

Why the pin is kept rather than loosened

Loosening to rollForward: latestFeature would fix the symptom but was rejected after testing. Every project sets RestorePackagesWithLockFile, and different SDK versions resolve different transitive package versions. Restoring this repo under 10.0.303 rewrites all four packages.lock.json files (Microsoft.NET.ILLink.Tasks 10.0.7 → 10.0.11). A looser pin would let contributors on different SDKs generate conflicting lock files and leak unrelated packages.lock.json diffs into pull requests.

Verified after installing 10.0.203: a clean build of the solution produces 0 warnings, 0 errors and no lock file churn at all. That confirms the pin is doing real work, so the fix is to document it accurately rather than weaken it.

Change

Docs only. README.md now:

  • names the required version, 10.0.203, and links to the .NET 10 download page rather than the generic one
  • quotes the exact error produced by the wrong SDK, so it is searchable
  • explains why the pin exists, so the next person hitting it fixes their SDK instead of loosening global.json
  • notes that installing 10.0.203 alongside existing SDKs is safe and non-destructive

No build, project, or dependency changes. global.json is intentionally untouched.

README told contributors to install the .NET 10 SDK `or the latest
version`, but global.json pins 10.0.203 with `rollForward: disable`.
Following the README therefore produced a build that refuses to run.

State the exact version, show the error it produces, and explain why the
pin exists: the projects restore with NuGet lock files, so a looser pin
would let different SDKs resolve different transitive versions and emit
spurious packages.lock.json diffs in unrelated pull requests.

Docs only. No build or project changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@WilliamsJason
Jason Williams (WilliamsJason) merged commit f85d57c into main Aug 12, 2026
7 checks passed
@WilliamsJason
Jason Williams (WilliamsJason) deleted the jaswill-microsoft-gdk-release-changes branch August 12, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants