After upgrading Visual Studio to 18.12.0, I cannot run my .net maui project because it says Xcode 26.0 is required.

Andrea Christy 5 Reputation points
2026-11-12T18:18:29.19+00:00

The error message is: This version of .NET for iOS (26.0.11017) requires Xcode 26.0. The current version of Xcode is 27.2. Either install Xcode 26.0, or use a different version of .NET for iOS. See https://aka.ms/xcode-requirement for more information.

I do not have a global.json file in my project.

When I run the dotnet workload list command, it shows that these are my installed workloads:

Workload version: 11.0.100.1

Installed Workload Id Manifest Version Installation Source

------------------------------------------------------------------------------------------------------

android 37.2.31/11.0.100 SDK 11.0.100, VS 17.14.36603.0, VS 18.12.12405.243

ios 27.2.11039/11.0.100 SDK 11.0.100, VS 17.14.36603.0, VS 18.12.12405.243

maccatalyst 27.2.11039/11.0.100 SDK 11.0.100, VS 17.14.36603.0, VS 18.12.12405.243

maui-windows 11.0.0/11.0.100 SDK 11.0.100, VS 17.14.36603.0, VS 18.12.12405.243

Developer technologies | Visual Studio | Other
Developer technologies | Visual Studio | Other

A family of Microsoft suites of integrated development tools for building applications for Windows, the web, mobile devices and many other platforms. Miscellaneous topics that do not fit into specific categories.


1 answer

Sort by: Most helpful
  1. AI answer

    2026-11-12T18:22:47.72+00:00

    Update the .NET version that your project actually targets: a net10.0-ios project needs the .NET 10 workload set with Xcode 27.2 support, while the installed 27.2.11039/11.0.100 workload applies to net11.0-ios.

    If the project targets .NET 10

    Open the MAUI .csproj and check TargetFrameworks, for example:

    <PropertyGroup>
      <TargetFrameworks>
        net10.0-android;net10.0-ios;net10.0-maccatalyst;
        net10.0-windows10.0.19041.0
      </TargetFrameworks>
    </PropertyGroup>
    

    If it contains net10.0-ios, install .NET SDK 10.0.404 and its 10.0.404 workload set, which contains .NET for iOS 27.2.10000 supporting Xcode 27.2. The currently installed .NET 11 workload does not replace the pack selected for a .NET 10 target. Workload commands operate in the context of the selected SDK version ^1^.

    After installing SDK 10.0.404, run from the solution directory:

    dotnet --list-sdks
    dotnet new globaljson --sdk-version 10.0.404 --force
    dotnet workload install ios maccatalyst maui --version 10.0.404
    dotnet workload --info
    dotnet clean
    dotnet build -f net10.0-ios
    

    The expected result is that the build resolves Microsoft.iOS.Sdk.net10.0_27.2 rather than Microsoft.iOS.Sdk.net10.0_26.0. The Xcode 27.2-compatible .NET 10 release and workload set are listed on the Apple workload releases page ^2^.

    The generated global.json is useful here because it makes the CLI and workload commands select SDK 10.0.404 consistently. Without one, dotnet selects the latest installed SDK—currently 11.0.100 in your environment ^3^.

    On Windows, avoid mixing Visual Studio-managed MAUI workloads with repeated manual workload uninstall/reinstall operations. If the CLI installation leaves Visual Studio unable to locate workloads, use Visual Studio Installer → Modify → .NET Multi-platform App UI development to repair the installation; Microsoft documents that mixed CLI and Visual Studio workload management can cause this state ^4^.

    If the project already targets .NET 11

    For net11.0-ios, your displayed workload is already the correct Xcode 27.2 workload:

    • workload set: [IP Address]
    • iOS pack: 27.2.11039
    • Xcode: 27.2

    In that case, the 26.0.11017 error means the build is resolving a different SDK or target framework than the dotnet workload list command. From the directory containing the solution, run:

    dotnet --version
    dotnet workload --info
    dotnet build -f net11.0-ios -v:diag > build.log
    

    Then search build.log for:

    Microsoft.iOS.Sdk.net
    MSBuildSDKPath
    global.json
    

    Also check parent directories for a global.json; SDK discovery searches upward and can use a file outside the project directory ^5^. Check Directory.Build.props in the solution and parent directories for overrides of TargetFramework, TargetFrameworks, or MSBuildSDKPath.

    If necessary, pin the already installed .NET 11 SDK at the solution root:

    {
      "sdk": {
        "version": "11.0.100",
        "rollForward": "latestPatch"
      }
    }
    

    Restart Visual Studio after changing the selected SDK, delete the project’s bin and obj directories, and rebuild.

    Do not bypass the check as the primary fix

    ValidateXcodeVersion=false suppresses only the version validation. Microsoft notes that using a different Xcode version may sometimes build, but it is unsupported ^6^. Because supported Xcode 27.2 workloads are available for both .NET 10 and .NET 11, align the target framework and workload instead.


    References

    1. dotnet workload install
    2. Releases · dotnet/macios · GitHub
    3. Select the .NET version to use
    4. Troubleshooting known issues
    5. global.json overview
    6. Xcode requirement
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.