Skip to content

.NET 9 - Xcode 16.2 support (9170)

Latest
Compare
Choose a tag to compare
@rolfbjarne rolfbjarne released this 19 Dec 16:00
· 17 commits to main since this release
4c5dd93

🚨 Xcode 16.2 is required with this release. Xcode 16.2 requires macOS 14.5+ or 15.0+.

This is a servicing release to the previous .NET 9 release, with support for Xcode 16.2.

Note: these are the base SDKs that add support for the platforms in question, for MAUI (which is built on top of our SDKs), go here instead: https://docs.microsoft.com/en-us/dotnet/maui/.

Versions

This release consists of the following versions:

Installation

You can use workload set version 9.0.101.2 in order to install these versions of the SDKs, please make sure to be using the latest .NET SDK 9.0.101 before issuing the dotnet workload install command below. You can validate your installed dotnet version using dotnet --version do make sure it shows 9.0.101 or greater before proceeding.

dotnet workload install <workload id(s)> --version 9.0.101.2

Available workload ids

Example command installing all listed workloads.

dotnet workload install ios tvos macos maccatalyst maui android --version 9.0.101.2

You can use dotnet workload --info to validate the workload versions installed in your system.

What's changed

Marshaled managed exceptions will be treated as unhandled exceptions by debuggers

Generally managed exceptions shouldn't "leak" into native code - they will be converted into Objective-C exceptions, but Objective-C exceptions have many issues and this can cause runtime problems.

Additionally, some native code will just swallow all Objective-C exceptions, essentially making any managed exceptions that triggered those Objective-C exceptions entirely silent (AppKit does this in its UI loop - see dotnet/maui#7176).

With this change, debuggers will be notified just before a managed exception is converted into an Objective-C exception, and will treat it as an unhandled managed exception, which will be a great improvement. One current downside is that the debugger isn't notified when the exception is thrown, but at a later point, which means the current frame when the debugger is stopped isn't entirely helpful. Work is in progress to improve this as well, and hopefully at some point we'll be able to stop the debugger when such managed exceptions are thrown.

References:

What's Changed

Full Changelog: dotnet-9.0.1xx-xcode16.1-9163...dotnet-9.0.1xx-xcode16.2-9170