[mobile] .NET 11 mobile runtime configuration updates#35878
[mobile] .NET 11 mobile runtime configuration updates#35878kotlarmilos wants to merge 8 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35878Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35878" |
AI code review refresh for net11.0 targetHead reviewed: Verdict:
|
The shared UI-test and device-test templates defaulted to the Mono runtime, so any caller that omitted the runtime parameter would build and run against Mono. Flip the defaults to CoreCLR and make the Windows UI-test call sites explicit so no lane resolves the mobile Mono runtime packs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
AI code review refresh for net11.0 targetHead reviewed: Verdict: 🚫 Blocked/limited — CI cannot bootstrapMechanically this remains a clean, low-risk SDK roll + an intentional pipeline default switch. But CI is still fully red at provisioning, so the change cannot be validated and is not mergeable yet. The blocker is upstream (preview.6 SDK/feed), not caused by this PR's diff. What changed since round 18 (
|
| Check | Build | Result |
|---|---|---|
maui-pr |
1461103 | fail |
maui-pr-devicetests |
1461105 | fail |
maui-pr-uitests |
1461104 | fail |
Every leg dies in 🛠️ Provision SDK & Build BuildTasks before any MAUI code compiles. Two distinct upstream root causes (clearer than round 18, both preview.6-side):
- macOS legs — SIGABRT NOT resolved. Provisioned
.dotnet/dotnetstill aborts (exit 134/Abort trap: 6) duringWorkloads.csprojrestore. New detail: the NativeAOT host failsdlopenof a mis-namedliblibSystem.Security.Cryptography.Native.Apple(doublelibprefix) — a preview.6 macOS host bug, not in this PR. - Windows legs — missing workload manifests.
NU1101: Unable to find package Microsoft.NET.Sdk.macOS.Manifest-11.0.100-preview.6(and…tvOS.Manifest…). The preview.6 iOS/macOS/tvOS workload manifest packages aren't yet in any configured feed (incl.general-testing).
Both are infra/upstream availability problems, not introduced by the diff. Re-roll once a healthy preview.6 build flows and the workload manifests are published.
Prior review reconciliation (round 18)
- ❌ CI red, preview.6 SDK aborts on workload restore (exit 134) → still failing; NOT resolved. Same SIGABRT on macOS, now pinpointed to the mis-named crypto native lib
dlopen; additionally Windows now fails with NU1101 missing manifests. ⚠️ Confirm Mono→CoreCLR coverage intent → partially addressed: the new commit explicitly defaults lanes to CoreCLR rather than dropping coverage; still worth a maintainer confirmation that CoreCLR-only mobile is the intended net11 posture.⚠️ Revert validation-feedNuGet.configchange before merge → unchanged;general-testingstill added anddarc-pub-dotnet-dotnetstill removed. Should return to normal dependency-flow sources before merge.- ✅ Version bumps internally consistent → re-verified for preview.6.
Blast radius / failure-mode probing
- Bootstrap SDK roll = total blast radius — the SIGABRT/NU1101 prove nothing in the repo builds right now.
- Pipeline default flip changes which runtime CI exercises across all mobile device/UI lanes (Mono→CoreCLR) — meaningful test-surface shift, but config-only, reversible, and matches the PR intent.
- No trimming/AOT/NativeAOT default or runtime-config semantics changes in product code; NativeAOT iOS lanes remain available.
Findings
- 🚫 CI fully blocked at provisioning (macOS SIGABRT exit 134; Windows NU1101 missing preview.6 workload manifests). Upstream, not the diff. Blocking.
⚠️ Revert validation-feedNuGet.configbefore merge.⚠️ Confirm CoreCLR-default is the intended net11 mobile posture.- ✅ SDK version bumps consistent; CoreCLR pipeline default switch is clean and config-only.
Confidence: High on the CI root causes and the mechanical/clean nature of the diff; Medium on the CoreCLR-only intent (depends on the team's net11 mobile runtime plan).
This is an automated, non-binding AI review for the net11.0 fleet refresh. It is not an approval and does not request changes via GitHub review state — a human maintainer should make the merge decision.
kubaflo
left a comment
There was a problem hiding this comment.
PR #35878 — Review Synthesis
Verdict: NEEDS_CHANGES (confidence: high)
This is a mechanically clean .NET 11 SDK roll (preview.5.26256.105 → preview.6.26310.106, Arcade/Helix beta.26310.106) plus an intentional Mono→CoreCLR pipeline default switch; version/SHA pairs are internally consistent across global.json, eng/Versions.props, and eng/Version.Details.xml (all map to dotnet/dotnet@8d5d82abe13). It is not mergeable as-is because the PR carries self-acknowledged temporary validation pins and all required checks are red. Changes are required before merge (revert the pins), so NEEDS_CHANGES is the right call over opus-4.6's NEEDS_DISCUSSION.
Key findings
- Temporary validation pins must be reverted before merge (merge gate). The
general-testingfeed inNuGet.config:7(withdarc-pub-dotnet-dotnetremoved) and the preview.6 version pins inglobal.json:3/eng/Versions.props/eng/Version.Details.xmlare validation-only. The PR body already states this as a TODO and it is covered in discussion rounds 18 & 19 — captured here as the blocker, not re-posted inline to avoid duplication. - Orphaned Material3 plumbing (inline, ui-tests.yml:104 — non-blocking cleanup). After the Material3 build/test stages were deleted, the
# Material3 Build Stagecomment (line 104) now precedes the unrelatedandroid_ui_tests_coreclrstage; theandroidApiLevelsExtendedparameter (line 9) has no remaining consumer; and the note at line 20 is stale. This is the one genuinely new, code-confirmed item (caught by opus-4.8 + opus-4.6, missed by the others). - Confirm coverage-loss is intentional (already raised). Material3,
RunOnAndroid, and macOS Catalyst UI lanes are dropped with no CoreCLR replacement. Already flagged for maintainer confirmation in the discussion; not re-posted inline. - Clean / validated:
AndroidPoolLinuxremoval has no residual references; theruntimeVariant: "CoreCLR"/useCoreClr: truedefault flips are consistent; no error-level defect in the diff itself. The added explicitruntimeVariant: "CoreCLR"(line 101) is harmless belt-and-suspenders — dropped as a non-issue.
CI
All required checks FAILING — maui-pr (1461103), maui-pr-devicetests (1461105), maui-pr-uitests (1461104) — every leg dies in Provision SDK on upstream preview.6 problems (macOS SIGABRT/exit 134; Windows NU1101 missing preview.6 workload manifests). Not caused by this diff; must go green before merge.
Restore global.json, NuGet.config, eng/Versions.props and eng/Version.Details.xml to the net11.0 base so CI bootstraps with the repo normal SDK. The validation pin to the preview.6 test build was only for local validation and did not boot on the CI hosts. The mobile test pipeline changes remain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-review PR #35878 — pipelines default to CoreCLR (new head
|
Surface the unsupported Mono mobile runtime build error directly in the workload to validate that no Mono mobile build paths remain in CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-review PR #35878 — pipelines default to CoreCLR (new head
|
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
The Material3 build and test stages were removed, leaving dead plumbing in ui-tests.yml: a stale "Material3 Build Stage" comment above the unrelated android_ui_tests_coreclr stage, the now-unused androidApiLevelsExtended parameter, and a note pointing at stages that no longer exist. Remove them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
The NETSDK1242 error for the Mono mobile runtime is emitted by the platform SDKs (Android and Apple) that MAUI apps build on top of. The guard in MAUI's Directory.Build.targets only affected this repository's own build through the internal _MauiTargetPlatformIs* properties, so it was redundant and did not surface to consumers. Remove it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines successfully started running 3 pipeline(s). |
✅ LGTM — no blocking issues foundRe-review PR #35878 — default mobile test pipelines to CoreCLR (new head
|
Description
Remove the Mono mobile device-tests, ui-tests, and PR Mono legs in eng/pipelines/ci.yml, arcade/stage-device-tests.yml, common/device-tests.yml, and common/ui-tests.yml.
Validation pipelines (must pass): dnceng/internal dotnet-maui 1536 (build), 1561 (ui-tests), 1562 (device-tests).
Validation pins (temporary): pinned to .NET 11 test build 11.0.100-preview.6.26310.106 (AzDO dotnet-unified-build run 2996804, BAR 318158, source dotnet/dotnet@8d5d82abe13, branch dev/update-sdk-mobile-stage2) and the public general-testing NuGet feed, so CI exercises the SDK with the Mono mobile workloads and RIDs removed.
TODO before merge: revert the global.json / Version.Details.xml / Versions.props pins and the NuGet.config feed back to the official VMR versions and the main feed.