Unity-Technologies/UnityCsReference · error · System.Exception

Could not find build platform for target group ${namedBuildT

Error message

Could not find build platform for target group ${namedBuildTarget.TargetName}

What it means

Thrown by CalculateSelectedBuildTarget when BuildPlatforms.instance is non-null but BuildPlatformFromNamedBuildTarget returns null — meaning the supplied NamedBuildTarget is not a registered build platform. This indicates either an unknown/removed target group or a target whose platform plugin is not loaded.

Source

Thrown at Editor/Mono/EditorUserBuildSettingsUtils.cs:32

            return CalculateSelectedBuildTarget(namedBuildTarget);
        }

        internal static BuildTarget CalculateSelectedBuildTarget(NamedBuildTarget namedBuildTarget)
        {
            if (namedBuildTarget.ToBuildTargetGroup() == BuildTargetGroup.Standalone)
            {
                BuildTarget target = EditorUserBuildSettings.selectedStandaloneTarget;
                if (target == BuildTarget.NoTarget)
                    target = EditorUserBuildSettings.activeBuildTarget;
                return DesktopStandaloneBuildWindowExtension.GetBestStandaloneTarget(target);
            }
            else
            {
                if (BuildPlatforms.instance == null)
                    throw new System.Exception("Build platforms are not initialized.");
                BuildPlatform platform = BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(namedBuildTarget);
                if (platform == null)
                    throw new System.Exception("Could not find build platform for target group " + namedBuildTarget.TargetName);
                return platform.defaultTarget;
            }
        }

        public static NamedBuildTarget CalculateSelectedNamedBuildTarget()
        {
            BuildTargetGroup targetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
            if (targetGroup == BuildTargetGroup.Unknown)
                targetGroup = EditorUserBuildSettings.activeBuildTargetGroup;

            // TODO: Eventually NamedBuildTarget will replace completetly BuildTargetGroup, and we won't need this custom check
            if (targetGroup == BuildTargetGroup.Standalone)
            {
                if (EditorUserBuildSettings.selectedStandaloneBuildSubtarget == StandaloneBuildSubtarget.Server)
                    return NamedBuildTarget.Server;

                return NamedBuildTarget.Standalone;
            }

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Filter your target list to NamedBuildTargets that resolve via BuildPlatforms.instance before calculating.
  2. Ensure the required platform module/package is installed for the Unity editor in use.
  3. Map deprecated target-group names to their current NamedBuildTarget equivalents.
  4. Catch the exception per-target and skip unsupported platforms with a warning.

Example fix

// before
foreach (var nbt in allTargets)
  var bt = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(nbt);

// after
foreach (var nbt in allTargets) {
  if (BuildPlatforms.instance?.BuildPlatformFromNamedBuildTarget(nbt) == null) continue;
  var bt = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(nbt);
}
Defensive patterns

Strategy: validation

Validate before calling

if (BuildPlatforms.instance == null || BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(namedBuildTarget) == null) { Debug.LogWarning($"Unknown build target: {namedBuildTarget.TargetName}"); return BuildTarget.NoTarget; }

Type guard

static bool IsKnownBuildTarget(NamedBuildTarget nbt) => BuildPlatforms.instance != null && BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(nbt) != null;

Try / catch

try { return CalculateSelectedBuildTarget(nbt); } catch (Exception) { /* skip unsupported target */ }

Prevention

When it happens

Trigger: Passing a NamedBuildTarget whose TargetName does not match any registered BuildPlatform (e.g. a target from a module/platform package that is not installed, or a custom target group). Also a target group string that was renamed between Unity versions.

Common situations: Build automation iterating a list of target groups that includes one unsupported by the installed Unity (missing platform module); scripts migrated from an older version referencing a renamed target group; CI on an editor variant that lacks certain platform add-ons.

Related errors


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