Skip to content

Conversation

@rolfbjarne
Copy link
Member

This brings Xcode 26.2 support to .NET 10.

rolfbjarne and others added 30 commits November 6, 2025 09:06
This is file 2 of 47 files with nullability disabled in Foundation.

Also:

* Remove redundant availability attributes.
* Add xml docs (by Copilot).

Contributes towards #17285.
…ave a managed peer yet. Fixes #24111. (#24189)

Say we have:

1. A native type with an init method.
2. A managed binding for that native type, but the init method isn't
bound.
3. A managed subclass of the managed binding (also without an
implementation for the init method).

In this case, native code can create a native instance of the subclass,
but no
managed code is executed, which means there won't be a corresponding
managed
peer either.

This became a problem in our ConformsToProtocol override/implementation,
because recently it changed to just return 'false' if we couldn't find a
managed peer for a native instance.

The fix is to create the managed instance in that case (by doing what we
did
before: call "Runtime.GetNSObject" on the native handle).

Fixes #24111.

---------

Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
This is file 3 of 47 files with nullability disabled in Foundation.

Also, by Copilot:

* Add missing xml comments.
* Improve xml comments with proper formatting and see cref attributes.

Contributes towards #17285.
…Fixes #24043. (#24181)

Since this may result in unintuitive behavior (library projects are
built differently than executable projects, so code that works in an
executable project may not compile when moved to a library project), an
escape hatch was implemented as well.

One unintuitive behavior was when building an executable project with a
library project from Windows: if the library project needs the remote
connection, it would use a different workload, and different remote
connection, than the executable project, which just wouldn't work. So we
don't enable this new behavior when library projects need the remote
connection (which is when bundle resources are precompiled for the
library project; aka when `BundleOriginalResources=false` - note that
it's enabled by default in .NET 10, so developers must opt in to run
into this problem and thus not getting this new behavior).

Fixes #24043.

---------

Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
… are stored. Fixes #24052. (#24198)

They're always stored locally.

This fixes an issue when building apps with extensions from Windows.

There are no tests, because there's another issue that breaks building
extensions from Windows (#23516), but the customer validated that the
fix
works for him, and the fix also makes sense.

Fixes #24052.
…ns in known failure strings.

This way we don't have to update the known failures every time we bump the assembly versions.
This is file 4 of 47 files with nullability disabled in Foundation.

Also (by Copilot):

* Improve XML documentation and nullability in NSDirectoryEnumerator.
* Remove placeholder 'To be added.' comments and replace with proper documentation.
* Remove unnecessary whitespace after triple-slash in XML comments.
* Add proper <see cref> attributes for type references.
* Add comprehensive documentation for all IEnumerator implementations.
* Document exception conditions for Reset and Current properties.

Contributes towards #17285.
…ion of the 'copySceneKitAssets' executable.

Also don't set the PATH or XCODE_DEVELOPER_USR_PATH variables anymore, it's
not needed.
We get suggestions in the doc publishing workflow about 'remarks' in enum
fields (they're ignored), so avoid this by not having 'remarks' in enum
fields.
)

1. This shouldn't ever be necessary.
2. If it were necessary, it should always be necessary.
3. Powershell's exit code handling is 🤯

For reference / amusement / scaring children: https://stackoverflow.com/a/57468523.
We need to use relative paths in learn.microsoft.com links.
…resilient. (#24243)

* If there are any unusable simulator runtimes, delete them all. A frequent failure
  is when a simulator runtime isn't ready because "Unusable - Other Failure: Duplicate
  of ...", so hopefully this will solve those problems.
* Don't pass -buildVersion to 'xcodebuild -downloadPlatform', Apple's tooling doesn't
  seem able to handle it correctly and gets confused.
* Remove a stray 'sleep 60'.
rolfbjarne and others added 7 commits December 12, 2025 15:40
This is file 29 of 47 files with nullability disabled in Foundation.

Changes made:
- Enabled nullable reference types
- Made internal field notificationCenter nullable (NSNotificationCenter?)
- Made ObservedData fields nullable to properly reflect optional values
- Made method parameters nullable where appropriate (fromObject, keys, aName, anObject)
- Replaced ArgumentNullException with ArgumentNullException.ThrowIfNull
- Removed 'To be added.' placeholder documentation
- Added comprehensive XML documentation for all public methods
- Added proper 'see cref' attributes throughout documentation
- Removed unnecessary whitespace in XML comments
- Improved documentation clarity and consistency
- Added missing exception documentation for ArgumentNullException

Contributes towards #17285.

---------

Co-authored-by: GitHub Copilot <noreply@github.com>
This is file 30 of 47 files with nullability disabled in Foundation.

Changes:
* Enabled nullable reference types
* Removed 'To be added' placeholder comments
* Added comprehensive XML documentation for TxtRecordData property
* Made TxtRecordData property nullable to match generated code

Contributes towards #17285.

---------

Co-authored-by: GitHub Copilot <copilot@github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR merges changes from main into release/10.0.1xx to bring Xcode 26.2 support to .NET 10. The changes include version bumps, new Apple API bindings, build system improvements, test enhancements, and DevOps pipeline updates.

Key Changes:

  • Update SDK versions from Xcode 26.1 to 26.2
  • Add CoreCLR registrar support in build system
  • Introduce new APIs for iOS/macOS 26.2 (AuthenticationServices, SafariServices, GameKit, etc.)
  • Add linker step to mark APIs for static registrar
  • Improve test infrastructure and add new test variations
  • Refactor DevOps pipelines for better disk space management
  • Enable nullable reference types in several Foundation classes

Reviewed changes

Copilot reviewed 244 out of 245 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tools/common/SdkVersions.cs Updated SDK versions from 26.1 to 26.2
tools/mtouch/Makefile Added CoreCLR registrar compilation support
tools/dotnet-linker/MarkForStaticRegistrar.cs New linker step to preserve APIs for static registrar
tools/common/StaticRegistrar.cs Enhanced delegate proxy type resolution
tools/common/Target.cs Added CoreCLR runtime handling
src//.cs Added new Xcode 26.2 API bindings across multiple frameworks
tests/common/test-variations.csproj Improved test variation system with multi-variation support
tests/dotnet/UnitTests/*.cs Enhanced test infrastructure with UseFloatingTargetPlatformVersion
tools/devops/automation/templates/common/setup.yml Centralized disk space checking
src/Foundation/*.cs Enabled nullable reference types in NSValue, NSUrlSession, NSXpcConnection, NSXpcInterface

No issues were found that require comments. The changes are well-structured, follow the repository conventions, and appropriately update the codebase for Xcode 26.2 support.

Files not reviewed (1)
  • tools/mtouch/Errors.designer.cs: Language not supported

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🔥 [PR Build #b15a6dd] Build failed (Detect API changes) 🔥

Build failed for the job 'Detect API changes' (with job status 'Failed')

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🔥 Unable to find the contents for the comment: D:\a\1\s\change-detection\results\gh-comment.md does not exist :fire

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #b15a6dd] Build passed (Build packages) ✅

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@rolfbjarne rolfbjarne enabled auto-merge December 15, 2025 08:54
@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #b15a6dd] Build passed (Build macOS tests) ✅

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #b15a6dd] Tests on macOS M1 - Mac Monterey (12) passed 💻

All tests on macOS M1 - Mac Monterey (12) passed.

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #b15a6dd] Tests on macOS X64 - Mac Sonoma (14) passed 💻

All tests on macOS X64 - Mac Sonoma (14) passed.

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #b15a6dd] Tests on macOS M1 - Mac Ventura (13) passed 💻

All tests on macOS M1 - Mac Ventura (13) passed.

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #b15a6dd] Tests on macOS arm64 - Mac Sequoia (15) passed 💻

All tests on macOS arm64 - Mac Sequoia (15) passed.

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #b15a6dd] Tests on macOS arm64 - Mac Tahoe (26) passed 💻

All tests on macOS arm64 - Mac Tahoe (26) passed.

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@dalexsoto dalexsoto added this to the xcode26.2 milestone Dec 15, 2025
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🚀 [CI Build #b15a6dd] Test results 🚀

Test results

✅ All tests passed on VSTS: test results.

🎉 All 121 tests passed 🎉

Tests counts

✅ 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. [attempt 2] 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 6 tests passed. Html Report (VSDrops) Download
✅ linker: All 44 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 9 tests passed. Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 11 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 9 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 11 tests passed. [attempt 3] Html Report (VSDrops) Download
✅ msbuild: All 2 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

Pipeline on Agent
Hash: b15a6ddf582645ea11bbe2430d2ed4d634c1bf7f [PR build]

@dalexsoto dalexsoto disabled auto-merge December 15, 2025 14:04
@dalexsoto dalexsoto merged commit 2c20490 into release/10.0.1xx Dec 15, 2025
47 of 51 checks passed
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.

7 participants