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
- Filter your target list to NamedBuildTargets that resolve via BuildPlatforms.instance before calculating.
- Ensure the required platform module/package is installed for the Unity editor in use.
- Map deprecated target-group names to their current NamedBuildTarget equivalents.
- 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
- Install the platform module for every target you iterate.
- Filter target lists against BuildPlatforms.instance before resolving.
- Update renamed target-group references when migrating Unity versions.
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
- Build platforms are not initialized.
- No valid types in required type list
- Parameter selected must be of type System.Enum
- Parameter enumValue must be of type System.Enum
- Unsupported enum base type for {0}
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/0efad7b9715de5be.
Report an issue: GitHub.