[net11.0] Merge main into net11.0.#25912
Conversation
## Summary - add the shared GH-AW PAT pool import and its repository setup documentation - update `code-radiator`, `ci-postmortem`, and `macios-reviewer` to source `COPILOT_GITHUB_TOKEN` from the selected PAT slot while continuing to use the existing `gh-aw-environment` - add a workflow that validates the configured `COPILOT_PAT_0` through `COPILOT_PAT_9` entries and regenerate the affected lock files Recreated from #25838. --------- Co-authored-by: vitek-karas <10670590+vitek-karas@users.noreply.github.com> Co-authored-by: Copilot <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**: [20260630.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=3011571) ([320875](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/320875)) - **Date Produced**: June 30, 2026 11:47:04 AM UTC - **Commit**: [5d58a231a8a5e322bdd27da674a7059e4d2e7220](dotnet/xharness@5d58a23) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) - **Dependency Updates**: - From [11.0.0-prerelease.26319.2 to 11.0.0-prerelease.26330.1][1] - Microsoft.DotNet.XHarness.iOS.Shared [1]: dotnet/xharness@a0534ae...5d58a23
…avoid a race. (#25878) The `__XAMARIN_DEBUG_*` environment variables were read and unset inside monotouch_configure_debugging, which runs on a separate thread that's started just before the runtime (and the managed Main method) is initialized. This created a race: depending on thread scheduling, the managed app could observe these environment variables (if it read the environment before the debugging thread unset them) or not. Capture and unset these environment variables on the main thread (in the new xamarin_capture_debugging_settings function, called right before the debugging thread is started) so that they're consistently removed before any managed code runs. Every present `__XAMARIN_DEBUG_*` variable is captured and unset (so none leak, even empty ones), while the original 'non-null and non-empty' check is preserved where the captured values are used. monotouch_configure_debugging now reads the captured values instead of the environment. This makes the behavior deterministic on all platforms (the debug environment variables never leak to the app), so update DotNetProjectTest.Run accordingly - it previously asserted that macOS leaked these variables, which was just the racy behavior. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Fixes #25491 (#25494) When `_ExportSymbolsExplicitly=false`, the `strip` command was running without any flags on the main executable, stripping all symbols including ones the runtime needs, causing the app to crash at launch. ## Changes 1. **`msbuild/Xamarin.Shared/Xamarin.Shared.targets`** — Always pass the symbol file to strip (revert the condition from PR #24800 that removed it when `_ExportSymbolsExplicitly=false`). 2. **`msbuild/Xamarin.MacDev.Tasks/Tasks/SymbolStrip.cs`** — Implement `GetAdditionalItemsToBeCopied()` to ensure the symbol file is transferred to the remote Mac for Windows→Mac builds, so remote builds behave identically to local builds. 3. **`tests/dotnet/UnitTests/ProjectTest.cs`** — Add `StrippedWithExportSymbolsExplicitlyFalse` test that builds with `_ExportSymbolsExplicitly=false`, executes the app, and verifies required symbols remain in the binary. ## Root cause PR #24800 fixed a build failure for remote Windows builds by removing the symbol file from the `strip` command when `_ExportSymbolsExplicitly=false`. However, running bare `strip` (without `-i -s <symbolfile>`) removes all symbols from the main executable, including ones the .NET runtime needs at launch. ## Fix approach Instead of conditionally omitting the symbol file, we now: - Always pass the symbol file to strip (it's always written unconditionally by `WriteLinesToFile`) - Ensure it gets transferred to the remote Mac via `GetAdditionalItemsToBeCopied()` This ensures consistent behavior between local and remote builds. Fixes #25491 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Rolf Bjarne Kvinge <rokvin@microsoft.com>
…s null. Fixes #25877 (#25885) The `SecProtocolMetadataTest.TlsDefaults` test intermittently fails in CI because `SecProtocolMetadata.ServerName` returns `null` even though the TLS connection itself succeeds. This happens when a corporate proxy or network appliance strips SNI (Server Name Indication) from the TLS handshake. The fix adds a null-check that marks the test as inconclusive in CI when `ServerName` is null, while still asserting the correct value in normal conditions. Fixes #25877 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#25873 (#25875) The `MessageHandlerTest.AcceptSslCertificatesServicePointManager` test intermittently fails in CI because httpbin.org drops the TCP connection mid-response, producing an `HttpIOException: The response ended prematurely`. The existing `IgnoreInCIIfBadNetwork` helper didn't handle this exception type, so the test was reported as a hard failure rather than being marked inconclusive. This adds an `IgnoreInCIIfResponseEndedPrematurely` check that catches `HttpIOException` and marks the test `Inconclusive` when running in CI, matching the pattern used for other transient network errors (DNS failures, timeouts, connection lost). Fixes #25873 --- 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.5.6 to 0.5.7.
The code-radiator workflow was able to prepare the `main` → `net11.0` merge locally, but `safeoutputs create_pull_request` failed while generating the PR patch. It was deriving the patch via `format-patch`, which expanded to the full commit range against `main` and overflowed the safeoutputs buffer.
- **Workflow behavior**
- Set `safe-outputs.create-pull-request.patch-format: bundle` in `code-radiator.md`
- This switches PR creation away from `format-patch`-based serialization and preserves merge commits without expanding the patch across the full shared history
- **Compiled workflow**
- Regenerated `code-radiator.lock.yml` so the safeoutputs handler config includes the explicit `patch_format: "bundle"` setting
- **Result**
- Merge PR creation remains enabled for `net*.0` / `xcode*` targets
- The workflow no longer depends on `git format-patch` for these merge branches, avoiding the buffer overflow path that filed the manual-follow-up issue
```yaml
safe-outputs:
create-pull-request:
max: 10
draft: false
patch-format: bundle
signed-commits: false
```
---------
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
Improve XML documentation for the `TWTweetComposeViewControllerResult` enum: - Replace 'To be added.' placeholders with meaningful descriptions - Remove empty `<remarks>` nodes - Fix `see cref` to use unqualified type name - Add proper documentation for `Cancelled` and `Done` values 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…25903) Actions like actions/cache/save, actions/cache/restore, actions/download-artifact, and actions/setup-node are only used in gh-aw generated workflow files (*.lock.yml and agentics-maintenance.yml). Dependabot should not bump these since they are managed by the gh-aw compiler. Fixes #25897 Fixes #25899 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ssemblies=true (#25894) When the assembly-preparer is used to post-process assemblies (PrepareAssemblies/PostProcessAssemblies=true), the set of assemblies that gets AOT-compiled - and which is used to detect AOT generic instantiation deduplication - is computed from ResolvedFileToPublish (via the assembly-preparer's ComputeAOTArguments step) instead of from the linker's own in-memory assembly collection. The dedup container assembly (aot-instances.dll) is only added to the linker's assembly collection (ManagedAssemblyToLink/TrimmerRootAssembly in _CreateAOTDedupAssembly), so it was never part of ResolvedFileToPublish. As a result, the assembly-preparer never saw the dedup assembly, deduplication was disabled, and every assembly was AOT-compiled with 'full' (compiling all generic instantiations redundantly) instead of 'dedup-skip'. This roughly doubled the AOT compiler's work (e.g. _AOTCompile for monotouch-test went from ~48s to ~76s). Fix this with two changes: * Add the dedup assembly to ResolvedFileToPublish when the assembly-preparer post-process path is used and deduplication is enabled, so it's included in the set of assemblies the assembly-preparer processes (and AOT-compiles). The add is guarded so it doesn't duplicate an entry that's already present. * Set Assembly.IsDedupAssembly in the assembly-preparer's PopulateApplicationAssembliesStep, exactly like LoadNonSkippedAssembliesStep does in the ILLink path, so the dedup container is recognized as AOT-compiled and gets the 'dedup-include' flag (while the other assemblies get 'dedup-skip'). Also improved the perf test. Before build times: | Project | Runtime identifier | Link mode | Disabled (average) | Enabled (average) | Difference (of average) | | -------------- | ------------------ | --------- | ------------------ | ----------------- | ----------------------- | | monotouch-test | ios-arm64 | None | 00:02:07.0742190 | 00:02:48.9871886 | 00:00:41.9129696 | | monotouch-test | ios-arm64 | SdkOnly | 00:01:20.4693850 | 00:01:56.3924870 | 00:00:35.9231020 | | monotouch-test | iossimulator-arm64 | None | 00:01:37.4725223 | 00:02:16.4294141 | 00:00:38.9568918 | | monotouch-test | iossimulator-arm64 | SdkOnly | 00:01:11.8543345 | 00:01:27.3413050 | 00:00:15.4869705 | | MySimpleApp | ios-arm64 | None | 00:01:18.7859068 | 00:01:54.7023664 | 00:00:35.9164596 | | MySimpleApp | ios-arm64 | SdkOnly | 00:00:21.7704550 | 00:00:53.0059895 | 00:00:31.2355345 | | MySimpleApp | iossimulator-arm64 | None | 00:00:54.6666308 | 00:01:26.3723282 | 00:00:31.7056974 | | MySimpleApp | iossimulator-arm64 | SdkOnly | 00:00:19.7740878 | 00:00:34.5455132 | 00:00:14.7714254 | After build times: | Project | Runtime identifier | Link mode | Disabled (average) | Enabled (average) | Difference (of average) | | -------------- | ------------------ | --------- | ------------------ | ----------------- | ----------------------- | | monotouch-test | ios-arm64 | None | 00:02:05.4666859 | 00:02:09.6491832 | 00:00:04.1824973 | | monotouch-test | ios-arm64 | SdkOnly | 00:01:20.1368215 | 00:01:45.1826245 | 00:00:25.0458030 | | monotouch-test | iossimulator-arm64 | None | 00:01:34.2666644 | 00:01:38.9737062 | 00:00:04.7070418 | | monotouch-test | iossimulator-arm64 | SdkOnly | 00:01:06.9120929 | 00:01:18.3662064 | 00:00:11.4541135 | | MySimpleApp | ios-arm64 | None | 00:01:20.3001297 | 00:01:23.2613776 | 00:00:02.9612479 | | MySimpleApp | ios-arm64 | SdkOnly | 00:00:20.4954960 | 00:00:47.6480467 | 00:00:27.1525507 | | MySimpleApp | iossimulator-arm64 | None | 00:00:53.6472697 | 00:00:55.3882440 | 00:00:01.7409743 | | MySimpleApp | iossimulator-arm64 | SdkOnly | 00:00:19.2538091 | 00:00:31.0467173 | 00:00:11.7929082 | --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#25884) The .NET standalone project templates (iOS, macOS, Mac Catalyst, tvOS) don't declare a `Framework` parameter in their `template.json` files. This means Visual Studio doesn't show the "Additional Information" page when creating a new project from these templates -- unlike MAUI templates which do have this parameter. This PR adds a `Framework` choice parameter to all 24 project-type template.json files. The parameter has a single choice matching the current TFM for the template pack (e.g. `net10.0-ios`), with a `replaces` directive that substitutes into the `<TargetFramework>` element in the generated `.csproj`. Affected templates: - iOS: app (C#, F#, VB), tabbed, lib, binding, notification extensions - macOS: app (C#, VB), lib, binding - Mac Catalyst: app (C#, VB), lib, binding - tvOS: app (C#, VB), lib, binding Fixes #17319 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PR builds have been running on the ACES shared pool successfully. This switches the three CI entry pipelines to use ACES as well, so all builds run on the same pool infrastructure. Pipelines changed: - `build-pipeline.yml` - `run-ci-api-diff.yml` - `run-post-ci-build-tests.yml` Also updates the documentation comment in `templates/variables/common.yml` to reflect the current state (all pipelines now use ACES). 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
When the base hash in the API diff comparison requires a different Xcode version than the current hash, the comparison currently fails with an error and exits. This is unnecessarily strict on CI bots that often have multiple Xcode versions installed. This PR changes `tools/compare-commits.sh` to: - When `system-dependencies.sh` fails, extract the `XCODE_DEVELOPER_ROOT` from the base hash's `Make.config` and check if that Xcode is installed on the machine. - If it is, write a `configure.inc` pointing to it and retry -- the build then succeeds with the correct Xcode. - If the required Xcode is not installed (or the retry still fails for other reasons), emit a **warning** instead of an error and skip the API/generator comparison gracefully. This allows the API diff to work on CI when both Xcode versions are available, and avoids failing the entire job when they are not. 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Improve XML documentation for the `TWRequestMethod` enum: - Replace 'To be added.' placeholders with meaningful descriptions - Remove empty `<remarks>` node - Add proper documentation for `Get`, `Post`, and `Delete` values 🤖 Pull request created by Copilot --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
✅ [PR Build #26d4b21] Build passed (Detect API changes) ✅Pipeline on Agent |
✅ [PR Build #26d4b21] Build passed (Build packages) ✅Pipeline on Agent |
✅ 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 |
🔥 [CI Build #26d4b21] Test results 🔥Test results❌ Tests failed on VSTS: test results 3 tests crashed, 0 tests failed, 193 tests passed. Failures❌ Tests on macOS Sonoma (14) tests🔥 Failed catastrophically on VSTS: test results - mac_sonoma (no summary found). Html Report (VSDrops) Download ❌ Tests on macOS Sequoia (15) tests🔥 Failed catastrophically on VSTS: test results - mac_sequoia (no summary found). Html Report (VSDrops) Download ❌ Tests on macOS Tahoe (26) tests🔥 Failed catastrophically on VSTS: test results - mac_tahoe (no summary found). Html Report (VSDrops) Download Successes✅ assembly-processing: All 1 tests passed. Html Report (VSDrops) Download macOS testsLinux Build VerificationPipeline on Agent |
No description provided.