🤖 Merge 'main' => 'xcode27' - #26353
Conversation
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**: [20260728.15](https://dev.azure.com/dnceng/internal/_build/results?buildId=3033574) ([324787](https://maestro.dot.net/channel/10307/github:dotnet:dotnet/build/324787)) - **Date Produced**: July 28, 2026 9:01:03 PM UTC - **Commit**: [c9eaf6d2f7b11c935ce6025093278843c89873d9](dotnet/dotnet@c9eaf6d) - **Branch**: [release/10.0.4xx](https://github.com/dotnet/dotnet/tree/release/10.0.4xx) - **Dependency Updates**: - From [10.0.0-beta.26374.115 to 10.0.0-beta.26378.115][1] - Microsoft.DotNet.Arcade.Sdk - Microsoft.DotNet.Build.Tasks.Feed - Microsoft.DotNet.SharedFramework.Sdk - From [10.0.400-preview.0.26374.115 to 10.0.400-preview.0.26378.115][1] - Microsoft.NET.Sdk - From [10.0.400 to 10.0.400][1] - Microsoft.TemplateEngine.Authoring.Tasks [1]: dotnet/dotnet@dfdd32e...c9eaf6d
#26258) Generate Xamarin.MacDev.Tasks' strongly typed resource source in each target framework's intermediate output directory. This prevents parallel builds from writing to the same source-tree Errors.designer.cs file and intermittently corrupting it. Fixes #26246 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove Headers, PrivateHeaders, and Modules directories from bundled frameworks before code signing, with `StripFrameworkHeaders=false` as an opt-out. Invalidate framework copy outputs when the property changes, and preserve Windows remoting long-path coverage by keeping the long fixture in framework resources. Tests: - `dotnet test tests/msbuild/Xamarin.MacDev.Tasks.Tests/Xamarin.MacDev.Tasks.Tests.csproj --no-restore --filter FullyQualifiedName~StripFrameworkHeadersTaskTests` - `dotnet build tests/dotnet/UnitTests/DotNetUnitTests.csproj --no-restore` Fixes #15724 🤖 Pull request created by Copilot
…iscovery (#26296) Addresses a code review comment from #26292. ## Problem The `_ComputeXCFrameworkDSyms` target in `msbuild/Xamarin.Shared/Xamarin.Shared.targets` filtered xcframework dSYM candidates using the MSBuild `Exists(...)` function: ```xml <_XCFrameworkDSymToCopy Include="@(_XCFrameworkDSymCandidate->'%(DSymSourceDir)/%(DSymName)')" Condition="Exists('%(DSymSourceDir)/%(DSymName)')"> <DSymName>%(DSymName)</DSymName> </_XCFrameworkDSymToCopy> ``` `Exists(...)` evaluates on the MSBuild host using host path semantics. For remote builds (Windows → macOS, e.g. Hot Restart / remote Mac builds) this is wrong: the files live on the Mac, not the Windows host, so the check never finds them and the xcframework dSYMs are not copied into the archive. The old comment even claimed the target "only runs on macOS", which is misleading. ## Fix Use the existing remote-capable `GetFileSystemEntries` task (already used elsewhere in the same file) to discover which `*.dSYM` directories actually exist under the computed `dSYMs` directory on the build machine (the Mac), and copy only those — instead of relying on the host-side `Exists(...)` function. - The discovered directory name equals the `DSymName` metadata used for the copy destination, so the `_XCFrameworkDSymToCopy` item shape (Identity = source dSYM path, `DSymName` metadata) is preserved and `_CopyXCFrameworkDSyms` keeps working unchanged. - `GetFileSystemEntries` now skips non-existent directories, since a framework's `dSYMs` directory may not exist. - Updated the misleading "only runs on macOS" comment. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Mirrors `dotnet/android#12255`, adding the upstream `gh-stack` v0.0.8 agent skill to macios. ## Changes - Added `.github/skills/gh-stack/SKILL.md`. - Documented stack creation, navigation, synchronization, rebasing, and recovery. - Captured non-interactive agent requirements, including explicit branch arguments, `submit --auto`, and `view --json`. ## Example ```bash gh stack submit --auto gh stack view --json ``` Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: dalexsoto <204671+dalexsoto@users.noreply.github.com>
Move eligible AddressBook, CoreFoundation, and OpenGLES constants from handwritten `Dlfcn.Get*Constant` initialization into bgen `[Field]` definitions. ### What changed - Generate native constant accessors for AddressBook, CoreFoundation, and OpenGLES bindings. - Remove the corresponding strict static constructors, AddressBook's shared `InitConstants` coordinator, handwritten loaders, and the now-unused OpenGLES library handle. - Preserve the existing public properties, readonly fields, platform availability, obsoletion metadata, and nullable signatures. - Keep the 22 shipped readonly fields and their internal underscored bindings under `!XAMCORE_5_0`, while exposing public generated properties under `XAMCORE_5_0`. - Teach bgen to honor `[NullAllowed]` on `[Field]` properties, with focused regression coverage. - Remove resolved CoreFoundation xtro exclusions and update the iOS and Mac Catalyst NativeAOT app-size baselines to reflect the smaller binaries. This is a focused follow-up for #16672. 🤖 Pull request created by Copilot --------- Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
Improve XML documentation for the following types: - **NSLayoutManager** — Fix tag ordering (summary before param), improve method documentation - **MLMultiArray** — Fix tag ordering, normalize indentation in Strides remarks, remove placeholder docs Changes include: - Reorder XML doc tags (summary before param) - Normalize indentation (single space after `///`) - Remove empty/placeholder elements 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…26075 (#26081) ## Why `InlineDlfcnMethodsStep` rewrites `Dlfcn.GetXxx` call sites into generated P/Invokes (and adds helper methods/fields) in **any** assembly that references `ObjCRuntime.Dlfcn`, including copied user/binding assemblies. Unlike the other inline/optimize steps, it had no `AssemblyAction.Link` gate, so it modified user/reloadable assemblies. Modifying a reloadable assembly breaks Hot Reload. ## What Gate the modification on a new `$(HotReloadCompatibleBuild)` property. When it's enabled, the step skips reloadable assemblies (those not being trimmed, i.e. `AssemblyAction != Link`). The `Dlfcn` calls then remain ordinary calls into the platform assembly - still correct, just not optimized into direct native references. Release builds don't set the property, so they keep inlining everywhere (even non-trimmed assemblies) and preserve today's app size. This is part of #26069 and depends on #26072 (the `$(HotReloadCompatibleBuild)` property). Since #26072 isn't merged yet, this PR includes the **minimal** plumbing for the property so the change is self-contained: - `LinkerConfiguration`: new `HotReloadCompatibleBuild` bool with load/save handlers. - `Xamarin.Shared.Sdk.targets`: default the property to `$(_BundlerDebug)` (true for Debug, false otherwise, since Hot Reload is debug-only) and flow it into `_CustomLinkerOptions` (which reaches both the trimmer and the assembly-preparer). ## Notes on correctness The concern about native linking is that we collect information so the app native-links correctly. That collection happens post-trim by scanning the generated `xamarin_Dlfcn_*_Native` P/Invokes in the **trimmed** assemblies; reloadable assemblies aren't trimmed, and Hot Reload is debug-only (no native symbol stripping), so skipping them loses nothing that's consumed. The `InlinedDlfcnFields` dictionary is write-only. NativeAOT is not compatible with Hot Reload, so the post-NativeAOT path is not a concern here. ## Testing Added `HotReloadCompatibleBuildLeavesReloadableAssemblyUnmodified` to the assembly-preparer tests: it prepares a user (`Copy`) assembly that calls `Dlfcn` under a Hot-Reload-compatible build and asserts the assembly is left byte-unmodified (the preparer reports no modification, the original `Dlfcn.GetIntPtr` call is preserved, and no generated `Dlfcn` helper type is added). `BaseClass` gained options to build the test assembly as a reloadable (`Copy`) assembly and to enable `HotReloadCompatibleBuild`. Fixes #26075 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
…ings (#26350) The `/apply-gist <gist-url>` PR command downloads unified `*.txt.diff` files from a gist and applies them to `tests/dotnet/UnitTests/expected/*.txt` with `git apply -p1`. GitHub can serve gist file content with CRLF line endings. The workflow wrote the downloaded content to disk verbatim, so on the Linux runner the diffs retained embedded `\r` characters. Because the expected files in the repo use LF, `git apply` failed with `patch does not apply` — see [run 30468376709](https://github.com/dotnet/macios/actions/runs/30468376709). This normalizes the downloaded gist content to LF before writing it, so the diffs apply cleanly regardless of how the gist stored its line endings. Verified manually: stripping `\r` from the same gist's diffs let all of them apply cleanly. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…deoWorkflow, NEVpnManager, INSetCarLockStatusIntent, CMCustomBlockAllocator (#26342) Improve XML documentation for 6 types: | Type | Changes | |------|---------| | NSCell | Fix tag ordering, replace placeholder descriptions with meaningful docs | | CTBaselineClass | Remove empty remarks, add summaries for CTBaselineFont members | | MTProfessionalVideoWorkflow | Replace placeholder docs with meaningful summaries | | NEVpnManager | Fix tag ordering, replace placeholders, fix indentation | | INSetCarLockStatusIntent | Fix tag ordering, replace placeholder param descriptions | | CMCustomBlockAllocator | Replace placeholders, fix indentation, clean up remarks | 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
✅ 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 #c44b15e] Test results 🔥Test results❌ Tests failed on VSTS: test results 0 tests crashed, 1 tests failed, 202 tests passed. Failures❌ monotouch tests (iOS) [attempt 2]1 tests failed, 18 tests passed.Failed tests
Html Report (VSDrops) Download Successes✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Monterey (12): 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:
.github/workflows/apply-gist.ymlAutomated merge of
mainintoxcode27.Created by the code-radiator workflow.