Document which global.json values dotnetup respects and clarify allowPrerelease behavior
- Dominant language
- C#
- Stars
- 3.2k
- Forks
- 1.3k
- PR merge metrics
- PR metrics pending
Description
## Context
PR https://github.com/dotnet/sdk/pull/53290 adds `GlobalJsonChannelResolver` which derives an SDK channel from global.json based on `sdk.version` and `sdk.rollForward`. However, it currently does **not** change behavior based on `sdk.allowPrerelease`, and there is no documentation stating which global.json fields dotnetup supports.
## Work items
1. **Create documentation** listing which global.json values dotnetup respects:
- `sdk.version` — used to derive the install channel
- `sdk.rollForward` — determines channel granularity (`latestPatch` → feature band, `latestFeature` → major.minor, etc.)
- `sdk.paths` — used for install path resolution
- `sdk.allowPrerelease` — currently **not** respected; behavior is unchanged regardless of value
2. **Clarify `allowPrerelease` behavior**: Currently, `allowPrerelease` does not imply a "preview" channel. The rationale is that there is only one preview channel, so we can't represent "stay on 10.x SDKs and get previews of new feature bands but not of 11.0." Document this decision and revisit if channel semantics change.
3. **Test with preview/pre-release versions**: Verify that channels like `11` work correctly when all available releases are preview (e.g., `11.0.100-preview.1`). Ensure the channel resolver doesn't inadvertently reject or misbehave with pre-release version strings.
## Origin
PR #53290 review comment: https://github.com/dotnet/sdk/pull/53290#discussion_r2897727903
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.