Skip to content

[net11.0] Merge main into net11.0.#25912

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

[net11.0] Merge main into net11.0.#25912
rolfbjarne wants to merge 17 commits into
net11.0from
dev/rolf/bump-main-in-net11.0-2026-07-02

Conversation

@rolfbjarne

Copy link
Copy Markdown
Member

No description provided.

rolfbjarne and others added 17 commits July 1, 2026 11:38
## 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>
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>
Copilot AI review requested due to automatic review settings July 2, 2026 17:08
@rolfbjarne rolfbjarne requested a review from mauroa as a code owner July 2, 2026 17:08

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.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

✅ [PR Build #26d4b21] Build passed (Detect API changes) ✅

Pipeline on Agent
Hash: 26d4b21b3f1f3da9dad32e118715d05e9090757b [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

✅ [PR Build #26d4b21] Build passed (Build packages) ✅

Pipeline on Agent
Hash: 26d4b21b3f1f3da9dad32e118715d05e9090757b [PR build]

@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: 26d4b21b3f1f3da9dad32e118715d05e9090757b [PR build]

@vs-mobiletools-engineering-service2

Copy link
Copy Markdown
Collaborator

🔥 [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
✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): 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
✅ introspection: All 4 tests passed. Html Report (VSDrops) Download
✅ linker (iOS): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (MacCatalyst): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (macOS): All 21 tests passed. Html Report (VSDrops) Download
✅ linker (tvOS): All 21 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 18 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 18 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 18 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 18 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ sharpie: All 1 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 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: 26d4b21b3f1f3da9dad32e118715d05e9090757b [PR build]

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants