Skip to content

feat: add support for .NET 11 GA - #5902

Merged
jamescrosswell merged 3 commits into
version7from
feat/net11-ga
Nov 10, 2026
Merged

jamescrosswell merged 3 commits into
version7from
feat/net11-ga

Conversation

@ric-oliv

@ric-oliv ric-oliv commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Follows #5830 and moves version7 from .NET 11 RC 3 to GA.

RC 3 GA
SDK (global.json) 11.0.100-rc.3.26522.148 11.0.100
workload set (global.json) 11.0.100-rc.3.26524.4 11.0.100
Microsoft.* package refs 11.0.0-rc.3.26522.148 11.0.0
iOS / Mac Catalyst TFM net11.0-ios27.0 / net11.0-maccatalyst27.0 net11.0-ios27.2 / net11.0-maccatalyst27.2
Xcode on the macOS jobs 27.0 27.2

The 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.1 set, but the Android 37.2.31 manifest it points at isn't on nuget.org yet, so I went with 11.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.0 fails with NETSDK1140: 27.0 is not a valid TargetPlatformVersion for iOS. Valid versions include: 27.2, so Sentry and Sentry.Maui now ship net11.0-ios27.2 and net11.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. The xcode-27 runner image already has it.

Two preview workarounds from #5547 come out

  • Directory.Build.props no longer appends prerelease to a stable VersionPrefix. 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 into 7.0.0-prerelease. The next rc isn't affected, because the condition never applied to a version with a prerelease label.
  • The musl container base image override is now empty. The GA SDK derives runtime-deps:11.0-alpine on its own, and that image exists.

The glibc override has to stay, though. The GA SDK still derives runtime-deps:11.0-noble-chiseled for linux-x64 and linux-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 GA 11.0-resolute-chiseled image.

One test build that GA broke

Sentry.Android.AssemblyReader.Tests builds AndroidTestApp in several variants and passed RunAOTCompilation=false to the JIT ones. The GA Android pack now fails with XA1044 when that property is set at all on CoreCLR, even to false. RC 3 accepted it. The test project now passes it only to net10, which still runs on Mono. AndroidTestApp already sets PublishReadyToRun=false, which is the CoreCLR equivalent.

CONTRIBUTING.md gains 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.slnf built with the same warnings on both.
  • The same 16,865 tests passed in all 84 test assemblies on both.
  • The macOS sample apps built with the same warnings on both. That covers the iOS and Mac Catalyst app builds that enforce Xcode 27.2.
  • cli-maui.Tests.ps1 uploads 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

  • I'll send the Blazor WebAssembly sample's move from the deprecated DevServer package to Microsoft.AspNetCore.Components.Gateway as a separate small PR.
  • Remove the .NET 11 preview workarounds at GA #5547 still lists the local ReferenceAssemblies.Net110 and a re-check of AppxGeneratePriEnabled.

Refs #5547

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

codecov Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 76.96%. Comparing base (25b505e) to head (c99d82b).
⚠️ Report is 2 commits behind head on version7.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

ric-oliv and others added 2 commits November 10, 2026 20:53
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>
@ric-oliv
ric-oliv marked this pull request as ready for review November 10, 2026 22:30
@github-actions github-actions Bot added the risk: high PR risk score: high label Nov 10, 2026
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>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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
jamescrosswell merged commit e33b6f9 into version7 Nov 10, 2026
74 of 75 checks passed
@jamescrosswell
jamescrosswell deleted the feat/net11-ga branch November 10, 2026 22:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants