9696 github.event_name == 'push' ||
9797 github.event.inputs.platform == 'ios' ||
9898 github.event.inputs.platform == 'both'
99- # macOS 15 runners only ship up to Xcode 26.3, but the .NET 10 iOS
100- # workload set 10.0.300+ pulls Microsoft.iOS.Sdk.net10.0_26.4 which
101- # requires Xcode 26.4 ("This version of .NET for iOS (26.4.x) requires
102- # Xcode 26.4"). macos-26 ships Xcode 26.4.1 as the default, so we pin
103- # to it explicitly until macos-latest migrates (scheduled for June 15,
104- # 2026 per the GitHub Actions changelog).
99+ # The .NET 10 iOS workload currently pulls Microsoft.iOS.Sdk.net10.0_26.5,
100+ # which rejects newer Xcode releases. Pin Xcode so setup-xcode does not
101+ # select latest-stable after the runner image advances.
105102 runs-on : macos-26
106103 steps :
107104 - name : Checkout
@@ -112,14 +109,10 @@ jobs:
112109 with :
113110 dotnet-version : ' 10.0.x'
114111
115- # latest-stable resolves to the newest non-prerelease Xcode on the
116- # runner (26.4.1 on macos-26 today), which keeps us in sync with
117- # whatever the .NET iOS workload requires without hardcoding a
118- # version that may roll forward.
119112 - name : Select Xcode
120113 uses : maxim-lobanov/setup-xcode@v1
121114 with :
122- xcode-version : latest-stable
115+ xcode-version : ' 26.5 '
123116
124117 # Both workloads are required even though only the iOS TFM is built,
125118 # because NuGet restore walks every declared TargetFramework of the
0 commit comments