{"record":{"id":"0efad7b9715de5be","repo":"Unity-Technologies/UnityCsReference","slug":"could-not-find-build-platform-for-target-group-n","errorCode":null,"errorMessage":"Could not find build platform for target group ${namedBuildTarget.TargetName}","messagePattern":"Could not find build platform for target group (.+?)","errorType":"exception","errorClass":"System.Exception","httpStatus":null,"severity":"error","filePath":"Editor/Mono/EditorUserBuildSettingsUtils.cs","lineNumber":32,"sourceCode":"            return CalculateSelectedBuildTarget(namedBuildTarget);\n        }\n\n        internal static BuildTarget CalculateSelectedBuildTarget(NamedBuildTarget namedBuildTarget)\n        {\n            if (namedBuildTarget.ToBuildTargetGroup() == BuildTargetGroup.Standalone)\n            {\n                BuildTarget target = EditorUserBuildSettings.selectedStandaloneTarget;\n                if (target == BuildTarget.NoTarget)\n                    target = EditorUserBuildSettings.activeBuildTarget;\n                return DesktopStandaloneBuildWindowExtension.GetBestStandaloneTarget(target);\n            }\n            else\n            {\n                if (BuildPlatforms.instance == null)\n                    throw new System.Exception(\"Build platforms are not initialized.\");\n                BuildPlatform platform = BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(namedBuildTarget);\n                if (platform == null)\n                    throw new System.Exception(\"Could not find build platform for target group \" + namedBuildTarget.TargetName);\n                return platform.defaultTarget;\n            }\n        }\n\n        public static NamedBuildTarget CalculateSelectedNamedBuildTarget()\n        {\n            BuildTargetGroup targetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;\n            if (targetGroup == BuildTargetGroup.Unknown)\n                targetGroup = EditorUserBuildSettings.activeBuildTargetGroup;\n\n            // TODO: Eventually NamedBuildTarget will replace completetly BuildTargetGroup, and we won't need this custom check\n            if (targetGroup == BuildTargetGroup.Standalone)\n            {\n                if (EditorUserBuildSettings.selectedStandaloneBuildSubtarget == StandaloneBuildSubtarget.Server)\n                    return NamedBuildTarget.Server;\n\n                return NamedBuildTarget.Standalone;\n            }","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/EditorUserBuildSettingsUtils.cs#L14-L50","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nforeach (var nbt in allTargets)\n  var bt = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(nbt);\n\n// after\nforeach (var nbt in allTargets) {\n  if (BuildPlatforms.instance?.BuildPlatformFromNamedBuildTarget(nbt) == null) continue;\n  var bt = EditorUserBuildSettingsUtils.CalculateSelectedBuildTarget(nbt);\n}","handlingStrategy":"validation","validationCode":"if (BuildPlatforms.instance == null || BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(namedBuildTarget) == null) { Debug.LogWarning($\"Unknown build target: {namedBuildTarget.TargetName}\"); return BuildTarget.NoTarget; }","typeGuard":"static bool IsKnownBuildTarget(NamedBuildTarget nbt) => BuildPlatforms.instance != null && BuildPlatforms.instance.BuildPlatformFromNamedBuildTarget(nbt) != null;","tryCatchPattern":"try { return CalculateSelectedBuildTarget(nbt); } catch (Exception) { /* skip unsupported target */ }","preventionTips":["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."],"tags":["csharp","unity-editor","build-pipeline","platforms","configuration"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}