Skip to content

[net11.0] Merge main into net11.0. - #26424

Open
rolfbjarne wants to merge 22 commits into
net11.0from
dev/rolf/bump-main-in-net11.0-2026-08-07
Open

[net11.0] Merge main into net11.0.#26424
rolfbjarne wants to merge 22 commits into
net11.0from
dev/rolf/bump-main-in-net11.0-2026-08-07

Conversation

@rolfbjarne

Copy link
Copy Markdown
Member

No description provided.

rolfbjarne and others added 15 commits August 5, 2026 18:04
…Function` when the type actually has any `UnmanagedCallersOnly` methods to look up. (#26364)

Only override `NSObjectProxyAttribute.LookupUnmanagedFunction` when the type actually has any `UnmanagedCallersOnly` methods to look up. The method is now virtual instead of abstract, and the base implementation returns `IntPtr.Zero`, which is exactly what the generated override did for types without any such methods.

Copilot-Session: 6aeeddfd-3bd8-4129-ad90-7292860c4b66

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…in .NET 11+. (#26409)

The trimmable-static registrar has been the default for NativeAOT on .NET 11+ since #26346. This makes it the default for **CoreCLR** as well, and enables the `PrepareAssemblies` flow along with it.

Mono keeps the managed-static registrar — only CoreCLR and NativeAOT were measured and tested.

## Why `PrepareAssemblies` has to come along

`PrepareAssemblies=true` is *required* for the trimmable-static registrar to produce a small app.

The assembly-preparer writes the generated type map assemblies to disk (marked with `[AssemblyMetadata ("IsTrimmable", "True")]`) *before* the trimmer runs, so the trimmer treats them as ordinary trimmable input assemblies. Without it, the type map assemblies are created from inside the trimmer, where they end up with the `copy` assembly action — which means they're never trimmed, and since they reference every Objective-C type in the app, nothing else can be trimmed either.

That's what made trimmable-static apps ~3x larger on CoreCLR, and it's why the old comment claimed the trimmable-static registrar couldn't be used outside of NativeAOT. That comment was simply wrong, and has been rewritten.

## Notes

- The `$(UseMonoRuntime)` defaults had to be **moved above** the registrar defaults, because the latter now check `$(UseMonoRuntime)` at evaluation time and would otherwise read an empty value. This also matches the layout on `net11.0`, which reduces the merge conflict when this flows.
- The `$(Registrar)` check on `PrepareAssemblies`/`PostProcessAssemblies` means a CoreCLR app that explicitly opts back in to the managed-static registrar doesn't get `PrepareAssemblies` enabled — that combination makes apps *larger*. NativeAOT keeps getting `PrepareAssemblies` regardless of the registrar (pre-existing behavior).
- **This is inert on `main`**, since `main` is still .NET 10. It takes effect when it flows into `net11.0`.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Improve XML documentation for:

- `VSAccountProviderAuthenticationSchemeExtensions`
- `EKCalendarChooserSelectionStyle`
- `EKCalendarChooserDisplayStyle`
- `EKEventViewAction`
- `EKEventEditViewAction`
- `CMMagneticFieldCalibrationAccuracy`
- `SSReadingListError`
- `CTErrorDomain`
- `CTCellularDataRestrictedState`
- `CTCellularPlanProvisioningAddPlanResult`

Each type is documented in a separate commit. The Cecil documentation baseline is updated for the newly documented `CTCellularPlanProvisioningAddPlanResult` API.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… switch. Fixes #26104. (#26140)

Replace the hand-written IL rewrite of `[NS|UI]Application.EnsureUIThread` with an `ObjCRuntime.Runtime.CheckForIllegalCrossThreadCalls` trimmer feature switch, driven by a new `$(CheckForIllegalCrossThreadCalls)` MSBuild property (defaults to the build configuration: on for debug, off for release).

* Remove `ProcessEnsureUIThread` (and its case) from the linker's `OptimizeGeneratedCode` step, and mark the now-orphaned `--optimize=remove-uithread-checks` flag as removed (following the existing `inline-intptr-size` convention).
* Emit the `ObjCRuntime.Runtime.CheckForIllegalCrossThreadCalls` `RuntimeHostConfigurationOption` from `Xamarin.Shared.Sdk.targets` and stub the `EnsureUIThread` method body via ILLink substitutions on all four platforms when the feature is off.
* Make `[NS|UI]Application.CheckForIllegalCrossThreadCalls` trimmable when the checks are off, without an API break: drop the field's `= true` initializer and instead set it from the application startup path, guarded by an internal feature-switched `Runtime.CheckForIllegalCrossThreadCalls` getter. When the feature is off the getter substitutes to a constant `false`, so the assignment is dead-code-eliminated and — with `EnsureUIThread` also stubbed — the field can be trimmed away entirely.
* Document the new `$(CheckForIllegalCrossThreadCalls)` property and update `optimizations.md`.

Because the property is emitted as a runtime feature switch, it also takes effect when trimming is disabled (the field reflects the property value at runtime); trimming is only needed to physically remove the check code.

Add `EnsureUIThreadChecksTest` (with a dedicated `EnsureUIThreadApp` project that keeps `EnsureUIThread` reachable) verifying the feature switch value and that, in the app bundle, `EnsureUIThread` is stubbed and the field is trimmed when the checks are off (iOS + macOS).

Fixes #26104

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…25861) (#26259)

Scenario:

An object whose native `init` returns a different pointer than `alloc` (e.g. `CKRecordZoneID`) frees its alloc'd address. If another object (e.g. a `__MonoMac_NSAsyncActionDispatcher`) is allocated at that just-freed address on another thread and registered in `object_map`, the first object's `Handle` setter would then unconditionally `UnregisterNSObject` its stale alloc handle and clobber the second object's registration. A later native->managed marshal of that address then fails ("Could not find an existing managed instance", errors 8027/8034/8035).

Fix:

* Defer `object_map` registration until after `init` for user types. User types carry their gchandle in a native ivar (set at alloc time), which is self-cleaning when the address is freed/reused, so it's a safe authoritative fallback lookup during `init`. Only the final (post-`init`) handle is added to `object_map`. Direct bindings have no ivar, so they stay eagerly registered and are protected by the ownership-aware unregister below.
* Use an ownership-aware `UnregisterNSObject (handle, this)` in the `Handle` setter, which only removes the `object_map` entry if it still refers to `this` (mirroring the check `NativeObjectHasDied` already had).
* Add a native->managed ivar fallback to `Runtime.GetNSObject`/`GetNSObject<T>` so a user type whose object_map registration was deferred can still be resolved during `init`.
* Gate both behaviors behind a legacy `AppContext` switch (`ObjCRuntime.Runtime.RegisterObjectsBeforeInit`, default off) to restore the previous behavior if any existing binding relied on it.

Tests:

* AllocInitRaceTest deterministically reproduces the clobber with a tiny custom native allocator (ReuseSlotClassA/ReuseSlotClassB): one class' `init` frees its instance and forces the next allocation to reuse that exact address. ReusedAddressSurvivesAllocInitClobber verifies the reused address still resolves to the correct object; ReusedAddressClobberedWithLegacySwitch documents the pre-fix behavior with the legacy switch on.
* InitCallbackProbeTest exercises surfacing `self` to managed code during `init`.
* A failed-init + GC guard (InitReturnsNilClass) covers the #23679 shape (a native `init` that raises an Objective-C exception, followed by a forced GC).

Fixes #9478.
Fixes #23679.
Fixes #25861.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
Improve XML documentation for:

- `PdfActionNamedName`
- `PdfWidgetControlType`
- `PdfLineStyle`
- `PdfMarkupType`
- `PdfTextAnnotationIconType`
- `PdfBorderStyle`
- `PdfDisplayBox`
- `PdfDisplayMode`
- `PdfAreaOfInterest`
- `MKMapType`

Each type is documented in a separate commit. The Cecil documentation baseline is updated for the newly documented `PdfMarkupType.Redact` and `PdfAreaOfInterest.AnyArea` APIs.

🤖 Pull request created by Copilot
)

ErrorHelper.ShowInternal always logged through IToolLog.LogError, even for warnings. That was mostly harmless when the log was the console (the message text itself says "warning MTxxxx: ..."), but when the log is an MSBuild task - which is the case for the assembly preparer (the PrepareAssemblies task, used for NativeAOT) - every warning became an MSBuild error and failed the build.

This made it impossible to build monotouch-test for macOS with NativeAOT, because the (correct) MT2387 warning about not being able to remove the dynamic registrar failed the build:

    error : warning MT2387: It's not safe to remove the dynamic registrar, because monotouchtest references 'ObjCRuntime.Runtime.RegisterAssembly (System.Reflection.Assembly)'.

Use IToolLog.LogWarning for warnings instead, which each IToolLog implementation already handles correctly.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nion assembly for Hot Reload (#26410)

The trimmable static registrar can relocate its registrar trampolines into a per-assembly companion assembly (`_<Asm>.TypeMap.dll`) so that user assemblies stay unmodified, which is a requirement for Hot Reload. Until now generic declaring types were excluded, because the existing implementation adds a proxy interface implementation to the user type - and that modifies the user assembly.

This PR lifts that restriction.

## How it works

For a method declared in a generic type we now emit a *generic* helper method into the companion assembly, mirroring the user type's generic parameters (including their constraints). Its body performs the same type-parameter-aware conversions as the regular trampoline, with the user type's generic parameters remapped to the helper method's own generic parameters.

The static `UnmanagedCallersOnly` callback - which doesn't know the instance's generic arguments - boxes the native arguments into an `object []` and calls the new `Runtime.InvokeGenericRegistrarTrampoline`, which closes the helper over the instance's actual generic arguments (`MakeGenericMethod`) and invokes it. This path is only ever reachable in a Hot-Reload-compatible build, which always runs under the JIT, so `MakeGenericMethod` is safe; it's guarded with `Runtime.IsNativeAOT` so the linker folds it away (and elides the IL2060/IL3050 warnings) everywhere else.

The closed helper is cached per (open helper method, closed instance type) in a nested type, so the reflection cost is paid once per instantiation, and so the `ConcurrentDictionary` instantiation is trimmed away together with the trampoline in every other configuration.

## Notable details

| Detail                        | Why                                                                                                                                                                       |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `out`/`ref` parameters        | Pointer-typed native parameters can't be boxed into an `object []`, so they're represented as a plain `IntPtr` in the helper (same size, same native ABI).                   |
| `exception_gchandle`          | Reflection can't marshal an `IntPtr*`, so the helper takes an `out IntPtr` and the callback writes it back through the native pointer.                                       |
| Value-type returns            | The helper returns `null` on failure, so the callback returns `default (T)` instead of unboxing `null` (which would throw across the `UnmanagedCallersOnly` boundary).       |
| `[DynamicDependency]`         | The trimmer crashes when comparing a signature's parameter list against a method with a nested type parameter, so signatures now omit the parameter list when unambiguous.   |

The `[DynamicDependency]` change works around dotnet/runtime#131892.

## Tests

* New assembly-preparer tests covering the relocated generic trampolines.
* A new `Debug (trimmable static registrar, all optimizations)` test variation. This also fixes the existing `Release (trimmable static registrar, all optimizations)` variation, which was actually running a Debug build.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ixes #26288 (#26406)

Simulator runtime downloads via `xcodebuild -downloadPlatform` in `system-dependencies.sh` occasionally fail with transient network errors during "Provision system dependencies", before any tests run. When the requested runtime isn't available through the normal mechanism, `xcodebuild` falls back to downloading it from Apple's downloadable simulator index, and that transport sometimes stalls until curl fails (e.g. `curl: (56) Recv failure: Operation timed out`). In that fallback case `xcodebuild` frequently still exits 0 while only printing the failure to stdout, so its exit code can't be trusted.

This adds an `xcodebuild_download_platform` helper that retries the download up to 5 times (with a 15s delay between attempts). Rather than trusting `xcodebuild`'s exit code or parsing its output, it determines whether a download attempt succeeded by checking the desired result directly: is the simulator runtime actually installed and available afterwards (via `xcrun simctl list runtimes`)? This is the same kind of check already used in `check_old_simulators`. The helper is used for all three `-downloadPlatform` call sites.

Fixes #26288

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
We've had a few regressions in mono-api-html, so this fixes the latest one and adds a unit test project to guard against future ones.

## The bug

The `MultiplexedFormatter` builds descriptions using the placeholder tokens `%LESSERTHANREPLACEMENT%` / `%GREATERTHANREPLACEMENT%`, because a single shared description string must be converted into each sub-formatter's own representation (`&lt;`/`&gt;` for HTML, `<`/`>` for markdown). The structured methods already convert these via `Replace ()`, but the raw `Write`/`WriteLine` string overloads did not.

The "New Type" addition path (`ClassComparer.AddedInner`) writes generic interface lists such as `IEnumerable<AuthorizationRight>` directly through `Output.Write`, so the placeholders leaked verbatim into the generated HTML (and markdown), e.g.:

    IEnumerable%LESSERTHANREPLACEMENT%AuthorizationRight%GREATERTHANREPLACEMENT%

Applying `Replace ()` in the six string-based `Write`/`WriteLine` overloads converts the placeholders per sub-formatter on this path too.

## Tests & solution

* Added `tools/api-tools/mono-api-html-tests`, an NUnit test project that references `mono-api-html`. The first test drives the public `ApiDiffFormatted.Generate` over in-memory api-info XML (the exact `AuthorizationRights` case), producing both HTML and markdown, and asserts no `*THANREPLACEMENT` tokens leak and that the generic interface renders correctly in both formats. Verified the test fails without the fix.

* Added `tools/api-tools/api-tools.slnx` referencing `mono-api-info`, `mono-api-html` and the new test project, so `dotnet test` in `tools/api-tools` builds all three and runs the tests.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…gnatures. (#26418)

The static registrar could emit method signatures referencing an Objective-C
type whose framework header wasn't imported in the generated code, which made
the generated code fail to compile:

    registrar.h:266:27: error: expected a type
      266 |         -(void) registerWebView:(WKWebView *)p0;
          |                                  ^

This happened for a wrapper type from a binding project (Google.MobileAds'
GADMobileAds) with a method taking a WebKit.WKWebView parameter, where nothing
else in the app pulled in the WebKit framework: 'CheckNamespace' is only called
for the types the registrar iterates over, not for the types showing up in the
generated method signatures.

Fix this by calling 'CheckNamespace' in 'ToObjCParameterType' for platform
NSObject types, so that the corresponding '#import <Framework/Framework.h>' is
always emitted.

Copilot-Session: ddb2f938-9d62-4ccf-8ce8-70056d74178b

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Improve XML documentation for:

- `AVAudioSessionSetActiveOptions`
- `AVMusicTrackLoopCount`
- `AVAudioSessionActivationOptions`
- `SCNErrorCode`
- `NSFileVersionReplacingOptions`
- `NSFileVersionAddingOptions`
- `NSItemProviderFileOptions`
- `CVOptionFlags`
- `CVTimeFlags`
- `CVPixelBufferPoolFlushFlags`

Each type is documented in a separate commit. The Cecil documentation baseline is updated for the newly documented `AVAudioSessionActivationOptions`, `SCNErrorCode`, and `NSItemProviderFileOptions` APIs.

🤖 Pull request created by Copilot

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 7, 2026 06:32
@rolfbjarne
rolfbjarne requested a review from dalexsoto as a code owner August 7, 2026 06:32
@rolfbjarne
rolfbjarne enabled auto-merge August 7, 2026 06:32
@rolfbjarne rolfbjarne added the ready-to-review This PR is ready to review/merge. label Aug 7, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This merge brings net11.0 up to date with main, including registrar/runtime fixes (notably for the alloc/init handle-reuse race in #25861), a new build-property-driven UI thread check mechanism, and several tooling/test improvements.

Changes:

  • Update NSObject registration/unregistration and add deterministic regression tests for the alloc/init handle reuse race (#25861) and related init-time behaviors.
  • Replace the legacy remove-uithread-checks optimization with the CheckForIllegalCrossThreadCalls MSBuild property + trimmer feature switch (including new tests and docs).
  • Improve trimmable-static registrar + Hot Reload support (generic trampoline relocation via companion helper + reflection) and harden DynamicDependency signature generation.

Reviewed changes

Copilot reviewed 74 out of 80 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tools/linker/OptimizeGeneratedCode.cs Remove EnsureUIThread optimization pass
tools/dotnet-linker/Steps/TrimmableRegistrarStep.cs Emit lookup method only when needed
tools/dotnet-linker/Steps/ManagedRegistrarStep.cs Relocate generic trampolines for Hot Reload
tools/dotnet-linker/DocumentionComments.cs Add name-only signature helper
tools/dotnet-linker/AppBundleRewriter.cs Avoid trimmer crash in DynamicDependency signatures
tools/common/StaticRegistrar.cs Add namespace validation in parameter mapping
tools/common/Optimizations.cs Deprecate remove-uithread-checks optimization plumbing
tools/common/ErrorHelper.tools.cs Don’t log warning stack traces as MSBuild errors
tools/api-tools/mono-api-html/MultiplexedFormatter.cs Avoid placeholder leakage in output
tools/api-tools/mono-api-html-tests/mono-api-html-tests.csproj New test project for mono-api-html
tools/api-tools/mono-api-html-tests/ApiDiffTests.cs Regression test for placeholder leakage
tools/api-tools/api-tools.slnx Add solution including tests
tests/xharness/Jenkins/TestVariationsFactory.cs Adjust trimmable-static variation naming/coverage
tests/test-libraries/libtest.m Add native helpers for init/race tests
tests/test-libraries/libtest.h Expose native callbacks/types for new tests
tests/monotouch-test/ObjCRuntime/InitCallbackProbeTest.cs Probe init-time behaviors for redesign
tests/monotouch-test/ObjCRuntime/AllocInitRaceTest.cs Deterministic repro for #25861 (+ legacy switch test)
tests/linker/link all/PreserveTest.cs Update preserved method signature expectation
tests/dotnet/UnitTests/expected/TVOS-MonoVM-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/TVOS-MonoVM-interpreter-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/TVOS-CoreCLR-R2R-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/TVOS-CoreCLR-Interpreter-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-R2R-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-TrimmableStatic-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/MacOSX-CoreCLR-Interpreter-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/MacCatalyst-MonoVM-interpreter-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-R2R-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/MacCatalyst-CoreCLR-Interpreter-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/iOS-MonoVM-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/iOS-MonoVM-interpreter-preservedapis.txt Update preserved APIs baseline
tests/dotnet/UnitTests/expected/iOS-CoreCLR-R2R-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/expected/iOS-CoreCLR-Interpreter-size.txt Update size baseline (TypeMap artifacts)
tests/dotnet/UnitTests/EnsureUIThreadChecksTest.cs New test for CheckForIllegalCrossThreadCalls propagation
tests/dotnet/EnsureUIThreadApp/tvOS/EnsureUIThreadApp.csproj New test app (tvOS)
tests/dotnet/EnsureUIThreadApp/shared.csproj Shared test app config
tests/dotnet/EnsureUIThreadApp/macOS/EnsureUIThreadApp.csproj New test app (macOS)
tests/dotnet/EnsureUIThreadApp/MacCatalyst/EnsureUIThreadApp.csproj New test app (Mac Catalyst)
tests/dotnet/EnsureUIThreadApp/iOS/EnsureUIThreadApp.csproj New test app (iOS)
tests/dotnet/EnsureUIThreadApp/EnsureUIThreadApp.cs Reference EnsureUIThread for linker inspection
tests/dotnet/EnsureUIThreadApp/Directory.Build.props Props passthrough for test app
tests/cecil-tests/Documentation.KnownFailures.txt Remove resolved known failures
tests/bindings-test/ApiDefinition.cs Add bindings for new native test types
tests/assembly-preparer/RelocateRegistrarTrampolinesTests.cs Add test for generic relocation to companion
tests/assembly-preparer/PreserveSmartEnumConversionsTest.cs Update DDA signature expectations
tests/assembly-preparer/PreserveBlockCodeHandlerTests.cs Update DDA signature expectations
tests/assembly-preparer/OptimizeGeneratedCodeHandlerTests.cs Remove EnsureUIThread optimizer tests + adjust others
tests/assembly-preparer/BaseClass.cs Allow injecting extra csproj content
system-dependencies.sh Retry/verify simulator runtime downloads
src/VideoSubscriberAccount/VSAccountProviderAuthenticationScheme.cs Improve XML docs for smart-enum extensions
src/UIKit/UIApplication.cs Move UI-thread check control to Runtime feature switch
src/SceneKit/Defs.cs Improve docs for SCNErrorCode
src/SafariServices/SSEnums.cs Improve docs for SSReadingListError
src/PdfKit/Enums.cs Improve docs + add missing summaries
src/ObjCRuntime/TypeMaps.cs Make LookupUnmanagedFunction virtual defaulting to Zero
src/ObjCRuntime/Runtime.cs Add deferred registration + generic companion trampoline invoke
src/MapKit/MKEnums.cs Fix doc typo
src/ILLink.Substitutions.tvOS.xml Add feature switch + stub EnsureUIThread
src/ILLink.Substitutions.macOS.xml Add feature switch + stub EnsureUIThread
src/ILLink.Substitutions.MacCatalyst.xml Add feature switch + stub EnsureUIThread
src/ILLink.Substitutions.iOS.xml Add feature switch + stub EnsureUIThread
src/Foundation/NSObject2.cs Defer registration + ownership-aware unregister + ivar fallback
src/Foundation/Enum.cs Improve docs + add NSItemProviderFileOptions docs
src/EventKitUI/Defs.cs Improve docs for EventKitUI enums
src/CoreVideo/CVEnums.cs Improve docs for CoreVideo enums
src/CoreTelephony/CTEnums.cs Improve docs + add Cancel enum member doc
src/CoreMotion/Defs.cs Remove placeholder docs
src/AVFoundation/Enums.cs Improve docs + add AVAudioSessionActivationOptions docs
src/AppKit/NSApplication.cs Align UI-thread checks with Runtime feature switch
dotnet/targets/Xamarin.Shared.Sdk.targets Emit CheckForIllegalCrossThreadCalls feature switch
dotnet/targets/Xamarin.Shared.Sdk.props Default trimmable-static for .NET 11 CoreCLR/NativeAOT
docs/website/optimizations.md Document remove-uithread-checks replacement
docs/building-apps/build-properties.md Document CheckForIllegalCrossThreadCalls
.github/workflows/zizmor.yml Bump zizmor GitHub Action

Comment on lines +1266 to +1276
if (onlyIfNeeded) {
if (object_map.ContainsKey (ptr)) {
// Already registered; don't touch the existing entry, just free the
// handle we speculatively allocated.
handle.Free ();
return;
}
} else {
if (object_map.Remove (ptr, out var existing))
existing.Free ();
}
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

✅ [CI Build #21edc1a] Prepare .NET Release succeeded ✅

📦 Published NuGet packages (32 packages)

iOS

  • Microsoft.iOS.Ref.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Runtime.ios-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Runtime.ios.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Runtime.iossimulator-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Runtime.iossimulator-x64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Sdk.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Templates.26.5.12122-net11-rc.1.nupkg
  • Microsoft.iOS.Windows.Sdk.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.NET.Sdk.iOS.Manifest-11.0.100-preview.7.26.5.12122-net11-rc.1.nupkg

MacCatalyst

  • Microsoft.MacCatalyst.Ref.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.MacCatalyst.Runtime.maccatalyst-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.MacCatalyst.Runtime.maccatalyst.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.MacCatalyst.Sdk.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.MacCatalyst.Templates.26.5.12122-net11-rc.1.nupkg
  • Microsoft.NET.Sdk.MacCatalyst.Manifest-11.0.100-preview.7.26.5.12122-net11-rc.1.nupkg

macOS

  • Microsoft.macOS.Ref.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.macOS.Runtime.osx-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.macOS.Runtime.osx-x64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.macOS.Runtime.osx.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.macOS.Sdk.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.macOS.Templates.26.5.12122-net11-rc.1.nupkg
  • Microsoft.NET.Sdk.macOS.Manifest-11.0.100-preview.7.26.5.12122-net11-rc.1.nupkg

tvOS

  • Microsoft.NET.Sdk.tvOS.Manifest-11.0.100-preview.7.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Ref.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Runtime.tvos-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Runtime.tvos.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Runtime.tvossimulator-arm64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Runtime.tvossimulator-x64.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Sdk.net11.0_26.5.26.5.12122-net11-rc.1.nupkg
  • Microsoft.tvOS.Templates.26.5.12122-net11-rc.1.nupkg

Other

  • Sharpie.Bind.Tool.26.6.0.726-net11-rc.1.nupkg

Pipeline on Agent
Hash: 21edc1a2603b28cb549bb55101434c9ee07da0f7 [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

…Dependency attributes.

The DynamicDependencyAttribute (string, Type) overload passed the TypeDefinition
straight to the custom attribute argument. When the type comes from a different
assembly than the one the attribute is added to, Cecil serializes the Type
argument without an assembly-qualified name (because a TypeDefinition's Scope is
its own module), and the trimmer can't resolve it:

    ILLink : error IL2036: <Module>..cctor(): Unresolved type 'Foundation.NSExpression' in 'DynamicDependencyAttribute'.

This is exactly what the DynamicallyAccessedMemberTypes overload right below
already guards against, so do the same here: import the type into the current
assembly first.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
@vs-mobiletools-engineering-service2

This comment has been minimized.

rolfbjarne and others added 5 commits August 7, 2026 16:45
ILLink's default assembly action is 'link', and the SDK only passes an explicit
'--action' to ILLink when $(TrimMode) is 'full' or 'partial'. This means that
with the legacy $(TrimMode)=link every assembly is linked, but the
assembly-preparer computed 'Copy' for any assembly without an
[AssemblyMetadata ("IsTrimmable", "true")] attribute.

Because of this mismatch every step whose IsActiveFor requires
AssemblyAction.Link (such as ApplyPreserveAttributeStep) skipped the app
assembly, so the [Preserve] attributes were never converted into
DynamicDependency attributes and the trimmer removed all the test fixtures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
…lue to the post-processing pass.

RegistrarRemovalTrackingStep runs in the assembly-preparer's preparation pass,
and the computed value is surfaced to MSBuild and used to set the
'ObjCRuntime.Runtime.DynamicRegistrationSupported' trimmer feature switch.

However, the native main file is generated during the post-processing pass
(GenerateMainStep), and that pass never got the computed value: it only got the
user-specified $(DynamicRegistrationSupported) MSBuild property (which is
usually empty). The result was that the native code was told that dynamic
registration was supported, while ILLink had removed the managed
implementation, and the app would crash at startup with:

    The runtime function register_assembly has been linked away.

Fix this by passing the computed value to the post-processing pass.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
RemoveAttributesStep only ran as a sub step of PostSweepDispatcher, and
PostSweepDispatcher is gated out of the trimmer's custom steps when
$(PrepareAssemblies) is true. The step had never been ported to the
assembly-preparer, which meant that the [Preserve], [NativeName], [Adopts],
[Protocol] and [ProtocolMember] attributes were never removed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
…to assemblies the trimmer removed.

The trimmable static registrar creates a companion typemap assembly for every
app assembly, and adds a corresponding TypeMapAssemblyTargetAttribute to the
root typemap assembly. If the trimmer ends up removing a companion assembly
(because all its types were trimmed away), the attribute in the root typemap
assembly is left behind (it's a plain string reference the trimmer knows
nothing about), and the app would crash at startup:

    System.IO.FileNotFoundException: Could not load file or assembly '...TypeMap'

So add a new step that removes any such stale attributes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
…sed.

PREPARE_ASSEMBLIES was only defined for the 'prepare-assemblies' test variation,
but $(PrepareAssemblies) is now enabled by default in several configurations
(CoreCLR + the trimmable static registrar), so tests that check the define would
take the wrong code path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b169a463-6209-484f-9a6a-cb4a0e13b000
@rolfbjarne
rolfbjarne disabled auto-merge August 7, 2026 18:28
@rolfbjarne
rolfbjarne requested a review from mauroa as a code owner August 7, 2026 18:28
@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

✅ API diff for current PR / commit

NET (empty diffs)

✅ API diff vs stable

NET (empty diffs)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: 7cfa209e3de3bd01551789eac00966d2f5e9bcae [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

🔥 [CI Build #7cfa209] Test results 🔥

Test results

❌ Tests failed on VSTS: test results

0 tests crashed, 31 tests failed, 233 tests passed.

Failures

❌ dotnettests tests (iOS)

1 tests failed, 0 tests passed.

Failed tests

  • DotNet tests: Failed (Execution failed with exit code 1)
    • Xamarin.Tests.AppSizeTest.CoreCLR_Interpreter(iOS,"ios-arm64",Tr...: App size changed significantly (-33,731 bytes (-32.9 KB = -0.0 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.AppSizeTest.CoreCLR_R2R(iOS,"ios-arm64",True): App size changed significantly (-33,752 bytes (-33.0 KB = -0.0 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(iOS,"ios-arm64",...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "_bindings-framework-test.TypeMap...
    • ... and 15 more

Html Report (VSDrops) Download

❌ dotnettests tests (MacCatalyst)

1 tests failed, 0 tests passed.

Failed tests

  • DotNet tests: Failed (Execution failed with exit code 1)
    • Xamarin.Tests.AppSizeTest.CoreCLR_Interpreter(MacCatalyst,"macca...: App size changed significantly (-79,797 bytes (-77.9 KB = -0.1 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.AppSizeTest.CoreCLR_R2R(MacCatalyst,"maccatalyst-a...: App size changed significantly (-79,829 bytes (-78.0 KB = -0.1 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(MacCatalyst,"mac...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "Contents/MonoBundle/.xamarin/mac...
    • ... and 14 more

Html Report (VSDrops) Download

❌ dotnettests tests (macOS)

1 tests failed, 0 tests passed.

Failed tests

  • DotNet tests: Failed (Execution failed with exit code 1)
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(MacOSX,"osx-x64;...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "Contents/MonoBundle/.xamarin/osx...
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(MacOSX,"osx-x64"...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "Contents/MonoBundle/_bindings-fr...
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(MacOSX,"osx-x64"...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "Contents/MonoBundle/_bindings-fr...
    • ... and 16 more

Html Report (VSDrops) Download

❌ dotnettests tests (tvOS)

1 tests failed, 0 tests passed.

Failed tests

  • DotNet tests: Failed (Execution failed with exit code 1)
    • Xamarin.Tests.AppSizeTest.CoreCLR_Interpreter(TVOS,"tvos-arm64",...: App size changed significantly (-33,710 bytes (-32.9 KB = -0.0 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.AppSizeTest.CoreCLR_R2R(TVOS,"tvos-arm64",True): App size changed significantly (-33,731 bytes (-32.9 KB = -0.0 MB) different > tolerance of +-10,240 bytes (10.0 KB = 0.0 MB)). ...
    • Xamarin.Tests.BundleStructureTest.Build_CoreCLR(TVOS,"tvos-arm64...: No unexpected files
      Assert.That(unexpectedFiles, Is.Empty)
      Expected:
      But was: < "_bindings-framework-test.TypeMap...
    • ... and 11 more

Html Report (VSDrops) Download

❌ introspection tests

7 tests failed, 0 tests passed.

Failed tests

  • introspection/macOS/Debug: Failed (Test run failed.
    Tests run: 34 Passed: 33 Inconclusive: 0 Failed: 1 Ignored: 0)
  • introspection/Mac Catalyst/Debug: Failed (Test run failed.
    Tests run: 43 Passed: 40 Inconclusive: 0 Failed: 1 Ignored: 2)
  • introspection/Mac Catalyst/CoreCLR: Failed (Test run failed.
    Tests run: 43 Passed: 40 Inconclusive: 0 Failed: 1 Ignored: 2)
  • introspection/iOS - simulator/Debug: Failed
  • introspection/iOS - simulator/CoreCLR: Failed
  • introspection/tvOS - simulator/Debug: Failed
  • introspection/tvOS - simulator/CoreCLR: Failed

Html Report (VSDrops) Download

❌ monotouch tests (iOS)

7 tests failed, 18 tests passed.

Failed tests

  • monotouch-test/iOS - simulator/Debug: Crashed
  • monotouch-test/iOS - simulator/Debug (CoreCLR): Crashed
  • monotouch-test/iOS - simulator/Debug (PrepareAssemblies): Crashed
  • monotouch-test/iOS - simulator/Debug (PrepareAssemblies, Trimmable Static Registrar, link sdk): Crashed
  • monotouch-test/iOS - simulator/Debug (trimmable static registrar): Crashed
  • monotouch-test/iOS - simulator/Debug (trimmable static registrar, all optimizations): Crashed
  • monotouch-test/iOS - simulator/Debug (interpreter): Crashed

Html Report (VSDrops) Download

❌ monotouch tests (MacCatalyst)

3 tests failed, 22 tests passed.

Failed tests

  • monotouch-test/Mac Catalyst/Debug (PrepareAssemblies): Failed (Test run crashed (exit code: 139).
    Test run crashed)
  • monotouch-test/Mac Catalyst/Debug (PrepareAssemblies, Trimmable Static Registrar, link sdk): Failed (Test run crashed (exit code: 139).
    Test run crashed)
  • monotouch-test/Mac Catalyst/Debug (trimmable static registrar): Failed (Test run crashed (exit code: 139).
    Test run crashed)

Html Report (VSDrops) Download

❌ monotouch tests (tvOS)

5 tests failed, 20 tests passed.

Failed tests

  • monotouch-test/tvOS - simulator/Debug: Crashed
  • monotouch-test/tvOS - simulator/Debug (CoreCLR): Crashed
  • monotouch-test/tvOS - simulator/Debug (PrepareAssemblies, Trimmable Static Registrar, link sdk): Crashed
  • monotouch-test/tvOS - simulator/Debug (LinkSdk): Crashed
  • monotouch-test/tvOS - simulator/Debug (trimmable static registrar): Crashed

Html Report (VSDrops) Download

❌ windows tests

1 tests failed, 2 tests passed.

Failed tests

  • Remote .NET tests/Xamarin.Tests.DotNetProjectTest.PublishAotOnWindows(iOS,"ios-arm64","Release"): Failed: No warnings expected, but got:

  • Remote .NET tests/Xamarin.Tests.WindowsTest.BundleStructureWithRemoteMac_CoreCLR(iOS,"ios-arm64",All,"Debug"): Failed: No unexpected files

  • Remote .NET tests/Xamarin.Tests.WindowsTest.BundleStructureWithRemoteMac_Mono(iOS,"ios-arm64",All,"Debug"): Failed: System.IO.IOException : The process cannot access the file 'Microsoft.iOS.pdb' because it is being used by another process.

  • Remote .NET tests/Xamarin.Tests.WindowsTest.BuildEmbeddedFrameworkInBindingProjectApp(iOS,"iossimulator-arm64"): Failed: 'dotnet build' failed with exit code 1

  • Remote .NET tests/Xamarin.Tests.WindowsTest.RemoteTest(iOS,"ios-arm64","Debug",False): Failed: Custom steps did not run as expected.

  • Remote .NET tests/Xamarin.Tests.WindowsTest.RemoteTest(iOS,"ios-arm64","Release",False): Failed: Custom steps did not run as expected.

  • Remote .NET tests/Xamarin.Tests.IncrementalBuildTest.CodeChangeSkipsTargetsOnRemoteWindows_CoreCLR(iOS,"iossimulator-arm64"): Failed: The target '_CompileNativeExecutable' was unexpectedly executed (B)

  • Remote .NET tests/Xamarin.Tests.DotNetProjectTest.BuildProjectsWithExtensionsOnRemoteWindows(iOS,"ios-arm64",False): Failed: 'dotnet build' failed with exit code 1

Html Report (VSDrops) Download

❌ Tests on macOS Sonoma (14) tests

1 tests failed, 4 tests passed.

Failed tests

  • MacCatalyst/maccatalyst-x64 monotouch-test: Failed (exit code 138)
    • No test failure details available. Output tail:
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run(NUnit.Framework.Internal.Test)
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run()
      • at MonoTouch.NUnit.UI.BaseTouchRunner.<AutoRun>b__49_0()
      • at MonoTouch.NUnit.UI.TouchRunner+<>c__DisplayClass19_0.<ExecuteOnMainThread>b__0()
      • at Foundation.NSAsyncActionDispatcher.Apply()
      • at __Registrar_Callbacks__.callback_3027_Foundation_NSAsyncActionDispatcher_Apply(IntPtr, IntPtr, IntPtr*)
      • at UIKit.UIApplication.UIApplicationMain(Int32, System.String[], IntPtr, IntPtr)
      • at UIKit.UIApplication.Main(System.String[], System.Type, System.Type)
      • at MainClass.Main(System.String[])
      • Execution completed with exit code 138

Html Report (VSDrops) Download

❌ Tests on macOS Sequoia (15) tests

1 tests failed, 4 tests passed.

Failed tests

  • MacCatalyst/maccatalyst-x64 monotouch-test: Failed (exit code 138)
    • No test failure details available. Output tail:
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run(NUnit.Framework.Internal.Test)
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run()
      • at MonoTouch.NUnit.UI.BaseTouchRunner.<AutoRun>b__49_0()
      • at MonoTouch.NUnit.UI.TouchRunner+<>c__DisplayClass19_0.<ExecuteOnMainThread>b__0()
      • at Foundation.NSAsyncActionDispatcher.Apply()
      • at __Registrar_Callbacks__.callback_3027_Foundation_NSAsyncActionDispatcher_Apply(IntPtr, IntPtr, IntPtr*)
      • at UIKit.UIApplication.UIApplicationMain(Int32, System.String[], IntPtr, IntPtr)
      • at UIKit.UIApplication.Main(System.String[], System.Type, System.Type)
      • at MainClass.Main(System.String[])
      • Execution completed with exit code 138
  • MacCatalyst/maccatalyst-arm64 monotouch-test: Failed (exit code 139)
    • No test failure details available. Output tail:
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run(NUnit.Framework.Internal.Test)
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run()
      • at MonoTouch.NUnit.UI.BaseTouchRunner.<AutoRun>b__49_0()
      • at MonoTouch.NUnit.UI.TouchRunner+<>c__DisplayClass19_0.<ExecuteOnMainThread>b__0()
      • at Foundation.NSAsyncActionDispatcher.Apply()
      • at __Registrar_Callbacks__.callback_3027_Foundation_NSAsyncActionDispatcher_Apply(IntPtr, IntPtr, IntPtr*)
      • at UIKit.UIApplication.UIApplicationMain(Int32, System.String[], IntPtr, IntPtr)
      • at UIKit.UIApplication.Main(System.String[], System.Type, System.Type)
      • at MainClass.Main(System.String[])
      • Execution completed with exit code 139

Html Report (VSDrops) Download

❌ Tests on macOS Tahoe (26) tests

2 tests failed, 3 tests passed.

Failed tests

  • MacCatalyst/maccatalyst-x64 monotouch-test: Failed (exit code 139)
    • No test failure details available. Output tail:
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run(NUnit.Framework.Internal.Test)
      • at MonoTouch.NUnit.UI.BaseTouchRunner.Run()
      • at MonoTouch.NUnit.UI.BaseTouchRunner.<AutoRun>b__49_0()
      • at MonoTouch.NUnit.UI.TouchRunner+<>c__DisplayClass19_0.<ExecuteOnMainThread>b__0()
      • at Foundation.NSAsyncActionDispatcher.Apply()
      • at __Registrar_Callbacks__.callback_3027_Foundation_NSAsyncActionDispatcher_Apply(IntPtr, IntPtr, IntPtr*)
      • at UIKit.UIApplication.UIApplicationMain(Int32, System.String[], IntPtr, IntPtr)
      • at UIKit.UIApplication.Main(System.String[], System.Type, System.Type)
      • at MainClass.Main(System.String[])
      • Execution completed with exit code 139
  • macOS/osx-x64 introspection: Failed (exit code 1)
    • [FAIL] TypoTest : Typos!
    • [FAIL] Typo: Xamarin
  • macOS/osx-arm64 introspection: Failed (exit code 1)
    • [FAIL] TypoTest : Typos!
    • [FAIL] Typo: Xamarin
  • MacCatalyst/maccatalyst-x64 introspection: Failed (exit code 1)
    • [FAIL] Typo: Xamarin
    • [FAIL] TypoTest : Typos!
  • MacCatalyst/maccatalyst-arm64 introspection: Failed (exit code 1)
    • [FAIL] Typo: Xamarin
    • [FAIL] TypoTest : Typos!

Html Report (VSDrops) Download

Successes

✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download
✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 5 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ linker (iOS): All 31 tests passed. Html Report (VSDrops) Download
✅ linker (MacCatalyst): All 31 tests passed. Html Report (VSDrops) Download
✅ linker (macOS): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (tvOS): All 31 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 20 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ sharpie: All 1 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

macOS tests

Linux Build Verification

Linux build succeeded

Pipeline on Agent
Hash: 7cfa209e3de3bd01551789eac00966d2f5e9bcae [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

⚠️ AppSizeTest expected files changed ⚠️

The AppSizeTest detected changes in the expected app size files.

To update the expected files, add a comment with the following command:

/apply-gist https://gist.github.com/vs-mobiletools-engineering-service2/4b532ef8f06152e84fec587bb2c8e068
Updated files
  • iOS-CoreCLR-Interpreter-size.txt
  • iOS-CoreCLR-R2R-size.txt
  • MacCatalyst-CoreCLR-Interpreter-size.txt
  • MacCatalyst-CoreCLR-R2R-size.txt
  • TVOS-CoreCLR-Interpreter-size.txt
  • TVOS-CoreCLR-R2R-size.txt

Pipeline on Agent
Hash: 7cfa209e3de3bd01551789eac00966d2f5e9bcae [PR build]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-review This PR is ready to review/merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants