Skip to content

Pin .NET SDK and Xcode for dotnet-maui CI#271

Merged
Bulzan Sergiu (busec0) merged 5 commits intomainfrom
sergiu/dotnet-maui-version-pinning
Apr 27, 2026
Merged

Pin .NET SDK and Xcode for dotnet-maui CI#271
Bulzan Sergiu (busec0) merged 5 commits intomainfrom
sergiu/dotnet-maui-version-pinning

Conversation

@busec0
Copy link
Copy Markdown
Member

@busec0 Bulzan Sergiu (busec0) commented Apr 27, 2026

Summary

  • Pin the .NET SDK version and the Xcode version used by the dotnet-maui CI.

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>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json to pin the .NET SDK used by the MAUI CI workflow.
  • Add a MAUI workload-rollback.json to pin workload manifest versions for iOS/Android/MAUI.
  • Update .github/workflows/dotnet-maui-ci.yml to 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.

Comment thread dotnet-maui/global.json Outdated
Bulzan Sergiu (busec0) and others added 3 commits April 27, 2026 09:45
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>
@busec0 Bulzan Sergiu (busec0) changed the title Pin .NET SDK, MAUI workloads, and Xcode for dotnet-maui CI Pin .NET SDK and Xcode for dotnet-maui CI Apr 27, 2026
@busec0 Bulzan Sergiu (busec0) merged commit 8ba1198 into main Apr 27, 2026
3 of 5 checks passed
@busec0 Bulzan Sergiu (busec0) deleted the sergiu/dotnet-maui-version-pinning branch April 27, 2026 07:15
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