🤖 Merge 'main' => 'xcode27.0'#25980
Conversation
Improve XML documentation for the `SKError` enum: - Replace 'To be added.' placeholders with meaningful descriptions for all error codes - Remove empty `<remarks>` nodes 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The 'Report build result' step no longer posts a GitHub comment when the build succeeds - only when it fails. These "Build passed" comments (and emails) don't add much value, so just remove them. We're still interested in failures though, so those will still be posted. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This pull request updates the following dependencies ## From https://github.com/dotnet/xharness - **Subscription**: [02e03784-16b3-4ced-b02a-3715797fc7da](https://maestro.dot.net/subscriptions?search=02e03784-16b3-4ced-b02a-3715797fc7da) - **Build**: [20260707.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=3016559) ([321779](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/321779)) - **Date Produced**: July 7, 2026 6:05:10 PM UTC - **Commit**: [b631e17803318d67046871027986a005f3db02bf](dotnet/xharness@b631e17) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) - **Dependency Updates**: - From [11.0.0-prerelease.26353.1 to 11.0.0-prerelease.26357.1][1] - Microsoft.DotNet.XHarness.iOS.Shared [1]: dotnet/xharness@4da0015...b631e17
…ionSupported. (#25939) When running as a step in the assembly-preparer, `RegistrarRemovalTrackingStep` used to rewrite `Runtime.get_DynamicRegistrationSupported` in the platform assembly (to return `false`) when it determined the dynamic registrar could be removed. That required the assembly-preparer to modify - and thus re-save - the platform assembly. Instead, compute the value and surface it to MSBuild, which enables the `ObjCRuntime.Runtime.DynamicRegistrationSupported` trimmer feature switch so that ILLink hardcodes the property (the same way it already does for e.g. `ObjCRuntime.Runtime.IsManagedStaticRegistrar`). This way the assembly-preparer doesn't have to touch any assembly for this optimization. ## How it works * Added `get_DynamicRegistrationSupported` substitution entries (feature `ObjCRuntime.Runtime.DynamicRegistrationSupported`) to the `ILLink.Substitutions.*.xml` for all four platforms. * `RegistrarRemovalTrackingStep` still computes `Optimizations.RemoveDynamicRegistrar`, but under `ASSEMBLY_PREPARER` it no longer rewrites the assembly - it reports the value via a new generic "MSBuild output property" mechanism instead. The real ILLink path (when `PrepareAssemblies` isn't enabled) is unchanged and still rewrites the assembly. ## Generic MSBuild output mechanism * `LinkerConfiguration.SetOutputForMSBuild (name, value)` collects output properties, and `FlushOutputForMSBuild` writes them - alphabetically sorted, one `Name=Value` per line - to a file. There's a separate file for the preparation and post-processing passes so the two passes don't clobber each other. * The files are added to `FileWrites` (when they exist after the assembly-preparer has run). * The `_SetDynamicRegistrationSupportedFeature` target (which runs after `_PrepareAssemblies` and before the trimmer) parses the `DynamicRegistrationSupported` property out of the preparation pass's output file and adds the `RuntimeHostConfigurationOption`. It's not incremental-gated and the file is persisted, so the feature switch is still set correctly when `_PrepareAssemblies` is skipped because its outputs are up-to-date. ## User override * Added a user-overridable `$(DynamicRegistrationSupported)` MSBuild property (documented in `build-properties.md`); the user value always wins. * When the user sets `$(DynamicRegistrationSupported)`, the value doesn't need to be computed, so `RegistrarRemovalTrackingStep` is skipped entirely in the preparation pass. ## Testing Added a `DynamicRegistrationSupportedTest` build test asserting the user value flows through to the feature switch. Also verified manually (default + explicit true/false) and with monotouch-test (`release|linksdk`, `PrepareAssemblies=true PostProcessAssemblies=true`). ## Note While working on this I ran into a pre-existing incremental-build failure with `PrepareAssemblies=true` (unrelated to this change); filed as #25938. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ed assemblies. (#25944) Add timing information to the assembly-preparer's PrepareAssemblies task: for each step (in both the Prepare and PostProcess passes) log - at MessageImportance.Low - how long the step took, whether it modified any assemblies, and a total duration for all steps. The fixed-width duration is printed before the (variable-width) step name so the durations line up between all the log lines. To know whether a step modified any assemblies, add an AssemblySaved callback to the AppBundleRewriter (invoked whenever SaveAssembly is called). All the steps that modify assemblies go through AppBundleRewriter.SaveAssembly (except two that's being fixed in separate PRs to either not save (RegistrarRemovalTrackingStep) or to subclass AssemblyModifierStep). --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dentifiers. Fixes #24046. (#24228) The problem is that when using RuntimeIdentifiers (plural), we have an outer build (for the plural version) and an inner build (for the singular version), and the session id is different between them. This means the outer build can't see the outputs from the inner build, because they're not in the same location on the Mac. The fix is to pass on the session id from the outer to the inner build, so that the inner build uses the same session id as the outer build. Fixes #24046. Fixes #25438 (once merged into `net11.0`). --------- Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
This pull request updates the following dependencies ## From https://github.com/dotnet/dotnet - **Subscription**: [da09b56a-0fb1-439a-b894-def14d2ec0a4](https://maestro.dot.net/subscriptions?search=da09b56a-0fb1-439a-b894-def14d2ec0a4) - **Build**: [20260707.10](https://dev.azure.com/dnceng/internal/_build/results?buildId=3016581) ([321816](https://maestro.dot.net/channel/10307/github:dotnet:dotnet/build/321816)) - **Date Produced**: July 7, 2026 8:37:06 PM UTC - **Commit**: [2bd0e65f2efd50d56ae2fa3adfc1c3f440c1d223](dotnet/dotnet@2bd0e65) - **Branch**: [release/10.0.4xx](https://github.com/dotnet/dotnet/tree/release/10.0.4xx) - **Dependency Updates**: - From [10.0.0-beta.26356.110 to 10.0.0-beta.26357.110][1] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.SharedFramework.Sdk - From [10.0.400-preview.0.26356.110 to 10.0.400-preview.0.26357.110][1] - Microsoft.NET.Sdk - From [10.0.400-preview.26356.110 to 10.0.400-preview.26357.110][1] - Microsoft.TemplateEngine.Authoring.Tasks [1]: dotnet/dotnet@0e60383...2bd0e65
Start 'log stream --style compact' at the beginning of test execution and stop it at the end. The output is written to the crash reports directory as system.log.zip (compressed because it can be large), so it gets uploaded together with crash reports and other test artifacts. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
#25922 (#25958) Before and after launching a macOS/Mac Catalyst app in tests, delete its saved application state directory (`~/Library/Saved Application State/<bundle-id>.savedState`). This prevents the "Do you want to try to reopen its windows again?" dialog from blocking automated test runs after a previous crash. Two implementations: - **C# (`TestBaseClass.cs`)**: The `Execute` method calls `DeleteSavedState` before and after running the app. It walks up the executable path to find the `.app` bundle, reads the bundle identifier from `Info.plist`, and deletes the saved state directory. - **Makefile (`shared-dotnet.mk`)**: A `delete-saved-state` target reads the bundle identifier via `defaults read` and removes the saved state directory. The `run-bare` target invokes it before and after execution. Fixes #25922 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Improve XML documentation for the `ModelAttribute` type: - Replace 'To be added.' placeholders with meaningful descriptions - Remove empty `<remarks>` nodes - Remove redundant `docs/api/Foundation/ModelAttribute.xml` (docs are now inline in source) - Document `Name` property 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5.3.0 to 5.4.0.
…form assembly is trimmed. (#25941) RegistrarRemovalTrackingStep computes whether the dynamic registrar can be removed and reports the result to MSBuild as the DynamicRegistrationSupported feature switch. The dynamic registrar lives in the platform assembly, which is an SDK assembly that's only trimmed when trimming is enabled; so when nothing is being trimmed the dynamic registrar can't be removed and there's nothing for the step to compute. Don't add the step to the assembly-preparer's step list in that case (in addition to the existing skip when the user explicitly set $(DynamicRegistrationSupported)). This avoids unnecessary work when building without trimming. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
# Conflicts: # scripts/run-packaged-macos-tests/run-packaged-macos-tests.cs
There was a problem hiding this comment.
Protected files were modified in this pull request and require manual scrutiny before merge.
Please verify that each protected-file change is intentional, policy-compliant, and safe:
- Protected files:
README.md,.agents/files/training-log-macios-binding-creator.md,.agents/skills/macios-binding-creator/SKILL.md,.agents/skills/macios-binding-creator/references/binding-patterns.md,.agents/skills/macios-binding-creator/references/test-workflow.md
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
🔥 [CI Build #134be5c] Test results 🔥Test results❌ Tests failed on VSTS: test results 1 tests crashed, 0 tests failed, 191 tests passed. Failures❌ Tests on macOS Golden Gate (27) tests🔥 Failed catastrophically on VSTS: test results - mac_golden_gate (no summary found). Html Report (VSDrops) Download Successes✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Sonoma (14): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
Caution
Protected files were modified in this change.
This pull request is in
request_reviewmode and requires explicit human scrutiny before merge.Protected files:
README.md,.agents/files/training-log-macios-binding-creator.md,.agents/skills/macios-binding-creator/SKILL.md,.agents/skills/macios-binding-creator/references/binding-patterns.md,.agents/skills/macios-binding-creator/references/test-workflow.mdAutomated merge of
mainintoxcode27.0.Created by the code-radiator workflow.
Conflict resolution:
scripts/run-packaged-macos-tests/run-packaged-macos-tests.cs: Combined macOS build version checking (from xcode27.0) with log stream capture (from main). Both features are independent and now work together.