Repository navigation
feat: add support for .NET 11 GA - #5902
Merged
Merged
Conversation
Pin the 11.0.100 SDK and move the Microsoft.* package references from 11.0.0-rc.3 to 11.0.0. Drop the VersionSuffix fallback from Directory.Build.props. It kept stable versions from depending on prerelease .NET 11 packages (NU5104), and with GA packages it would only make 7.0.0 ship as 7.0.0-prerelease. Blank the musl container base image, because the GA SDK derives 11.0-alpine on its own. Keep glibc pinned, now to the GA 11.0-resolute-chiseled image. The GA SDK still derives 11.0-noble-chiseled, which doesn't exist. See dotnet/sdk#53370. global.json keeps the RC 3 workload set until Microsoft publishes the GA one. Refs #5547 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## version7 #5902 +/- ##
============================================
- Coverage 76.98% 76.96% -0.02%
============================================
Files 538 538
Lines 19714 19714
Branches 3872 3872
============================================
- Hits 15176 15173 -3
- Misses 3666 3668 +2
- Partials 872 873 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Pin workload set 11.0.100, which brings Android 37.2.29, iOS and Mac Catalyst 27.2.11039 and MAUI 11.0.0. The newer 11.0.100.1 set points at an Android manifest that isn't on nuget.org yet. Move the latest iOS and Mac Catalyst TFMs from 27.0 to 27.2. GA ships only the 27.2 packs, and the GA workloads reject 27.0 with NETSDK1140. Pin Xcode 27.2 to match, because the 27.2 pack fails app builds on any other Xcode. Pass RunAOTCompilation=false to the Android test app only below net11. The GA Android pack fails with XA1044 when the property is set at all on CoreCLR, and RC 3 accepted it. Refs #5547 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The SDKs released on 2026-11-10 (including 11.0.100) make VSTest verify that its test-session directory is private. On ubuntu-24.04-arm the check fails even though every test passes: The test session directory '/run/user/1001/...' can be accessed by users other than its owner, it should allow the owner only. Pointing VSTEST_ARTIFACTS_BASE_DIRECTORY at a fresh 0700 directory doesn't help there, so turn the check off for that leg only until upstream fixes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| so only Mono TFMs get it. --> | ||
| <_RuntimeProps Condition="'$(_Aot)' == 'True'">RunAOTCompilation=true;UseMonoRuntime=true</_RuntimeProps> | ||
| <_RuntimeProps Condition="'$(_Aot)' != 'True'">RunAOTCompilation=false</_RuntimeProps> | ||
| <_RuntimeProps Condition="'$(_Aot)' != 'True' And $([MSBuild]::VersionLessThan($([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')), '11.0'))">RunAOTCompilation=false</_RuntimeProps> |
Collaborator
There was a problem hiding this comment.
Note
The GA Android pack fails the build with XA1044 whenever RunAOTCompilation is set on CoreCLR, and that includes setting it to false... which is why we don't set it here.
test/AndroidTestApp/AndroidTestApp.csproj:9 sets PublishReadyToRun=false, because .NET 11 turns ReadyToRun on by default. Turning ReadyToRun off also sets UseNativeAot=false.
jamescrosswell
approved these changes
Nov 10, 2026
This was referenced Nov 10, 2026
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.
Follows #5830 and moves
version7from .NET 11 RC 3 to GA.global.json)11.0.100-rc.3.26522.14811.0.100global.json)11.0.100-rc.3.26524.411.0.100Microsoft.*package refs11.0.0-rc.3.26522.14811.0.0net11.0-ios27.0/net11.0-maccatalyst27.0net11.0-ios27.2/net11.0-maccatalyst27.2The GA workload set brings Android 37.2.29, iOS and Mac Catalyst 27.2.11039 and MAUI 11.0.0. There's also a newer
11.0.100.1set, but the Android 37.2.31 manifest it points at isn't on nuget.org yet, so I went with11.0.100.Apple moves to 27.2
GA only ships the 27.2 Apple packs. There's no GA build of the 27.0 one, unlike .NET 10 GA, which kept a 26.0 pack around. With the GA workloads,
net11.0-ios27.0fails withNETSDK1140: 27.0 is not a valid TargetPlatformVersion for iOS. Valid versions include: 27.2, soSentryandSentry.Mauinow shipnet11.0-ios27.2andnet11.0-maccatalyst27.2. That matches what apps on .NET 11 GA can target anyway.The 27.2 pack also fails any iOS or Mac Catalyst app build unless Xcode is 27.2, so the Xcode pin moves to
/Applications/Xcode_27.2.app. Thexcode-27runner image already has it.Two preview workarounds from #5547 come out
Directory.Build.propsno longer appendsprereleaseto a stableVersionPrefix. It only existed to avoid NU5104 while we depended on prerelease .NET 11 packages, and with GA packages it would have turned the 7.0.0 release into7.0.0-prerelease. The next rc isn't affected, because the condition never applied to a version with a prerelease label.runtime-deps:11.0-alpineon its own, and that image exists.The glibc override has to stay, though. The GA SDK still derives
runtime-deps:11.0-noble-chiseledforlinux-x64andlinux-arm64, and there's no noble image for .NET 11. The SDK fix, dotnet/sdk#53371, only went into the preview 4 branch, and dotnet/sdk#53370 is still open. So the pin moves from the preview image to the GA11.0-resolute-chiseledimage.One test build that GA broke
Sentry.Android.AssemblyReader.TestsbuildsAndroidTestAppin several variants and passedRunAOTCompilation=falseto the JIT ones. The GA Android pack now fails withXA1044when that property is set at all on CoreCLR, even tofalse. RC 3 accepted it. The test project now passes it only to net10, which still runs on Mono.AndroidTestAppalready setsPublishReadyToRun=false, which is the CoreCLR equivalent.CONTRIBUTING.mdgains a row for that, and its container and Apple platform version rows now match what GA needed.How I checked it
I ran the macOS CI job's build and tests locally, on RC 3 and on GA side by side. GA used the GA workloads and Xcode 27.2, and RC 3 used its own workloads and Xcode 27.0.
Sentry-CI-Build-macOS.slnfbuilt with the same warnings on both.cli-maui.Tests.ps1uploads symbols for Android, iOS and Mac Catalyst MAUI builds on GA.I haven't run the device tests or anything that needs Windows, Linux or Docker, so CI is the first run for those, including the new container base images.
Not in this PR
DevServerpackage toMicrosoft.AspNetCore.Components.Gatewayas a separate small PR.ReferenceAssemblies.Net110and a re-check ofAppxGeneratePriEnabled.Refs #5547