Pin .NET SDK and Xcode for dotnet-maui CI#271
Merged
Bulzan Sergiu (busec0) merged 5 commits intomainfrom Apr 27, 2026
Merged
Conversation
dotnet workload restore --from-rollback-file fails because the command internally invokes install with --skip-manifest-update, which conflicts with --from-rollback-file. Use update first to pin manifest versions, then plain restore to install workloads using those pins. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Pins the .NET SDK, MAUI workload manifest versions, and Xcode version used by the dotnet-maui GitHub Actions workflow to prevent CI breakages caused by upstream workload/Xcode compatibility shifts.
Changes:
- Add
dotnet-maui/global.jsonto pin the .NET SDK used by the MAUI CI workflow. - Add a MAUI
workload-rollback.jsonto pin workload manifest versions for iOS/Android/MAUI. - Update
.github/workflows/dotnet-maui-ci.ymlto use the pinned global.json, restore workloads from the rollback file, and pin Xcode for the iOS build job.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| dotnet-maui/global.json | Introduces a pinned SDK selection for MAUI-related builds. |
| dotnet-maui/DittoMauiTasksApp/workload-rollback.json | Adds explicit workload manifest version pinning for reproducible workload restores. |
| .github/workflows/dotnet-maui-ci.yml | Switches CI to pinned SDK/workloads and pins Xcode for the iOS build job to avoid runner image drift. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The workload manifest pin alone wasn't enough — the macos-26 runner has the iOS 26.2 SDK pack pre-installed, so MSBuild resolved net9.0-ios to the highest available TPV (26.2.9008), which requires Xcode 26.3. Pinning the TPV explicitly (net9.0-ios18.2, net9.0-maccatalyst18.2) forces MSBuild to use the 18.2 SDK pack regardless of what newer packs are installed on the runner. Updates the workflow build/output paths, UITests path lookup, and README examples to match. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
The workload manifest pin (18.2.9173) didn't expose a usable TPV path on the macos-26 runner — NETSDK1140 listed only 18.0 and 26.2 as valid. Rather than fight pack resolution, take the simpler route: use the latest workload and pin Xcode to 26.3 (which is what 26.2.9008 needs). Keeps the SDK pin in dotnet-maui/global.json and the explicit Xcode selection in CI so the "out of sync Xcode/.NET iOS" failure mode is still controlled, just from the Xcode side. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary