If you are facing problems after a new version of macOS, or iOS have been released, stay tuned.
In this example, I’m having issues with the new update of iOS 18 and macOS Sequioa. Some days or weeks are needed from Microsoft side to have a vmPool in the cloud to build your iOS apps with the latest SDKs, so theres a possibility that you might encounter this problem on some fresher updates aswell.
So how the error looks like?
ILLINK : error MT2362: The linker step 'ClassHandleRewriter' failed during processing: One or more errors occurred. (The type 'MapKit.MKSelectionAccessory' (used as a return type in MapKit.MKMapView/_MKMapViewDelegate.GetSelectionAccessory) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITextFormattingViewController' (used as a parameter in UIKit.UITextView/_UITextViewDelegate.DidBeginFormatting) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITextFormattingViewController' (used as a parameter in UIKit.UITextView/_UITextViewDelegate.DidEndFormatting) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITextFormattingViewController' (used as a parameter in UIKit.UITextView/_UITextViewDelegate.WillBeginFormatting) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITextFormattingViewController' (used as a parameter in UIKit.UITextView/_UITextViewDelegate.WillEndFormatting) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.AcceptItemsFromDropSession) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.DidSelectTab) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.DidSelectTab) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITabGroup' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.DisplayOrderDidChangeForGroup) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.GetDisplayedViewControllers) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.GetOperationForAcceptingItemsFromDropSession) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.ShouldSelectTab) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
) (The type 'UIKit.UITab[]' (used as a parameter in UIKit.UITabBarController/_UITabBarControllerDelegate.VisibilityDidChangeForTabs) is not available in iOS 17.2 (it was introduced in iOS 18.0). Please build with a newer iOS SDK (usually done by using the most recent version of Xcode).
)
Solution after the proper vmImages are released by Microsoft:
To resolve this issue, you need to update the macOS image used in your Azure Pipelines to the latest version. This ensures that the build environment uses the most recent version of Xcode, which includes the necessary iOS SDKs.
Here’s how you can update your Azure Pipelines configuration:
- Open your Azure Pipelines YAML file: Locate the YAML file that defines your pipeline configuration.
- Update the
vmImage
: Change thevmImage
tomacOS-latest
to ensure that the latest macOS version is used, which includes the most recent Xcode and iOS SDKs.
pool:
vmImage: 'macOS-latest'
- Save and commit the changes: Save the updated YAML file and commit the changes to your repository.
- Run the pipeline: Trigger a new build in Azure Pipelines to verify that the issue is resolved.
By updating the vmImage
to macOS-latest
, you ensure that your build environment is using the latest tools and SDKs, which should resolve the linker errors related to unavailable types.
Solution until the proper vmImages are not present:
Modify your pipeline, and don’t forget to add comments on the modified pipeline!
- Open your Azure Pipelines YAML file: Locate the YAML file that defines your pipeline configuration.
- Update the YAML file:
pool:
vmImage: 'macOS-14'
# András @ 24.10.04: Explicit version needed until macos15 vmimage is being released. Use latest when possible
steps:
- task: CmdLine@2
displayName: 'Select XCode 16 explicitly'
inputs:
script: 'sudo xcode-select -s /Applications/Xcode_16.app'
# András @ 24.10.04: Explicit version code needed for XCode. Remove this task when possible
- task: CmdLine@2
displayName: 'Install MAUI Workload'
inputs:
script: 'dotnet workload install maui --version 8.0.402'
# András @ 24.10.04: Explicit version needed until macos15 vmimage is being released. Use no --version tag if possible
- Save and commit the changes: Save the updated YAML file and commit the changes to your repository.
- Run the pipeline: Trigger a new build in Azure Pipelines to verify that the issue is resolved.