Unity-Technologies/UnityCsReference · critical · NotSupportedException

Unsupported architecture {RuntimeInformation.ProcessArchitec

Error message

Unsupported architecture {RuntimeInformation.ProcessArchitecture} on macOS

What it means

Thrown by GetCurrentDotNETRuntimeId (UnityEditorMSBuildPropsTargetsGeneration.cs:216, NotSupportedException) when running on macOS but RuntimeInformation.ProcessArchitecture is neither Arm64 nor X64. Unity only ships osx-arm64 and osx-x64 RIDs, so any other architecture cannot be mapped and props/targets generation fails.

Source

Thrown at Editor/Mono/Scripting/ScriptCompilation/MsBuild/UnityEditorMSBuildPropsTargetsGeneration.cs:216

                    return "win-x64";
                default:
                    throw new NotSupportedException($"Unsupported architecture {RuntimeInformation.ProcessArchitecture} on Windows");
            }
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            return "linux-x64";
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
        {
            switch (RuntimeInformation.ProcessArchitecture)
            {
                case Architecture.Arm64:
                    return "osx-arm64";
                case Architecture.X64:
                    return "osx-x64";
                default:
                    throw new NotSupportedException($"Unsupported architecture {RuntimeInformation.ProcessArchitecture} on macOS");
            }
        }

        throw new NotSupportedException($"Unsupported OS platform {RuntimeInformation.OSDescription}");
    }

    private static string s_cachedUnitySdkVersion;

    // Reads the version from Unity.Sdk.<version>.nupkg so global.json tracks CI's bumped value
    // (in sdk/UnitySdksCommon.props) instead of a hardcoded literal.
    private static string GetUnitySdkVersion(string sdkNugetsPath)
    {
        if (s_cachedUnitySdkVersion != null)
            return s_cachedUnitySdkVersion;

        const string prefix = "Unity.Sdk.";
        const string suffix = ".nupkg";

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Run Unity Editor on a supported macOS architecture (Apple Silicon Arm64 or Intel x64).
  2. If running under Rosetta or a VM that misreports architecture, run natively so ProcessArchitecture matches the host.
Defensive patterns

Strategy: validation

Validate before calling

if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)
    && RuntimeInformation.ProcessArchitecture is not (Architecture.X64 or Architecture.Arm64))
{
    throw new PlatformNotSupportedException(
        $"Unity requires macOS x64 or ARM64 (got {RuntimeInformation.ProcessArchitecture}).");
}

Prevention

When it happens

Trigger: Running the editor on a macOS machine whose reported process architecture is not Apple Silicon (Arm64) or Intel x64.

Common situations: An exotic macOS environment or a misreported architecture under a translation layer / VM.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/ed1ba447a76cbe5f. Report an issue: GitHub.