Scope & Applicability
This article applies only if all of the following conditions are true:
- You are using Visual Studio for Windows (not Visual Studio for Mac).
- You are using the Pair to Mac feature to connect Visual Studio on your Windows machine to a MacInCloud server.
- Your build is failing with an error message that explicitly references an Xcode version mismatch (see example error messages below).
- Your project targets iOS or macOS using .NET MAUI, Xamarin.iOS, or a .NET iOS workload.
If your build is failing for a different reason (e.g., missing certificates, provisioning profile issues, or compilation errors unrelated to Xcode), this article is not relevant to your issue.
Background
When Visual Studio for Windows connects to a MacInCloud server via Pair to Mac, the .NET build toolchain performs a pre-build validation step that checks whether the version of Xcode installed on the Mac server is officially supported by the version of .NET (or Xamarin) you are using. This check happens before any compilation begins.
MacInCloud keeps Xcode updated to the latest release to support the newest iOS and macOS SDKs. However, Microsoft's .NET framework occasionally lags behind in officially certifying support for the newest Xcode release. When this happens, the pre-build validation step will reject the Xcode version on the server and fail the build - even though the toolchain is fully functional and capable of producing a working app.
This is a framework-side limitation, not a MacInCloud server issue.
Symptoms
Your situation matches this article if you observe all of the following:
- You are connected to your MacInCloud server via Pair to Mac in Visual Studio for Windows.
- The build fails immediately, before any source files are compiled. You will not see any compilation output - the error appears at the very start of the build process, during the step where Visual Studio is preparing the build environment.
- The error message explicitly references an Xcode version number and states that the installed version is not supported. For example:
Example error messages:
This version of .NET for iOS (26.0.xxxx) requires Xcode 26.2. The current version of Xcode is 26.3. Either install Xcode 26.2, or use a different version of .NET for iOS. See https://aka.ms/xcode-requirements for more information.
This version of .NET MAUI requires Xcode X.X. The current Xcode version installed is X.X+1.
error NETSDK1145: The required workload ios is not installed. To fix this issue, run 'dotnet workload restore'.(when accompanied by an Xcode version mismatch in the build output)
- The same project built successfully before a recent Xcode update on the server (e.g., it worked with Xcode 26.2 but fails after the server was updated to Xcode 26.3 or later).
- If you pair to a different Mac running the older Xcode version your .NET version officially supports, the build succeeds without changes.
Plan-Specific Notes
Managed Plan Users
On Managed plans, Xcode is updated automatically by MacInCloud. You do not have control over which Xcode version is installed. Apply the workaround below to bypass the version check.
Dedicated Plan Users
On Dedicated plans, you have full control over your server. You may choose to either apply the workaround below, or install the specific Xcode version your .NET framework officially supports alongside the current version using a tool such as Xcodes.
Workaround
The workaround is to disable the Xcode version validation check in your project configuration. This does not affect build output or app functionality — it only skips the pre-build version compatibility check.
.NET MAUI / .NET iOS
You need to add a setting to your project file (.csproj) that tells .NET to skip the Xcode version check. Here's how:
- In Visual Studio, go to the Solution Explorer panel on the right side.
- Find your project (it will have a
.csprojextension, e.g.MyApp.csproj). Right-click on it and select Edit Project File. This opens the file as XML text. - Look for an existing
<PropertyGroup>section near the top of the file. It will look something like this:<PropertyGroup> <TargetFrameworks>net10.0-ios;net10.0-android</TargetFrameworks> <OutputType>Exe</OutputType> ... </PropertyGroup> - Add the following line inside that
<PropertyGroup>block, before the closing</PropertyGroup>tag:<ValidateXcodeVersion>false</ValidateXcodeVersion>
- Your
<PropertyGroup>should now look something like this:<PropertyGroup> <TargetFrameworks>net10.0-ios;net10.0-android</TargetFrameworks> <OutputType>Exe</OutputType> ... <ValidateXcodeVersion>false</ValidateXcodeVersion> </PropertyGroup> - Save the file (
Ctrl + S). - Rebuild your project. The Xcode version error should no longer appear.
Notes
- MacInCloud updates Xcode regularly to support the latest iOS and macOS SDKs. When a new Xcode version is released, there is often a gap before Microsoft officially certifies support in the .NET framework. This workaround bridges that gap.
- This article will be updated as new framework-specific workarounds are identified or as official .NET support for newer Xcode versions is released.
- If you are unsure whether this article applies to your situation, paste the full error message from your build output into a support ticket and we will confirm.
Interested in MacinCloud Managed Servers?
Visit the Managed Server Plan page to obtain a Managed server.Do you require full root/admin privileges on a MacinCloud Server?
Find out more about MacinCloud Dedicated Server Plans.