{"record":{"id":"afb13a8a0854bc05","repo":"JosefNemec/Playnite","slug":"assigned-built-in-emulator-profile-definition-not","errorCode":null,"errorMessage":"Assigned built-in emulator profile definition not found.","messagePattern":"Assigned built-in emulator profile definition not found\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"source/Playnite/Emulators/Scanner.cs","lineNumber":249,"sourceCode":"                    cancelToken,\r\n                    crcExclusions,\r\n                    scanner.ScanSubfolders,\r\n                    scanner.ScanInsideArchives,\r\n                    scanner.MergeRelatedFiles,\r\n                    fileScanCallback);\r\n            }\r\n            else if (scanner.EmulatorProfileId.StartsWith(BuiltInEmulatorProfile.ProfilePrefix, StringComparison.Ordinal))\r\n            {\r\n                builtinProfile = emulator.BuiltinProfiles?.FirstOrDefault(a => a.Id == scanner.EmulatorProfileId);\r\n                if (builtinProfile == null)\r\n                {\r\n                    throw new Exception(\"Assigned built-in emulator profile not found.\");\r\n                }\r\n\r\n                builtinProfileDef = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);\r\n                if (builtinProfileDef == null)\r\n                {\r\n                    throw new Exception(\"Assigned built-in emulator profile definition not found.\");\r\n                }\r\n\r\n                games = ScanDirectory(\r\n                    dirToScan,\r\n                    emulator,\r\n                    builtinProfile,\r\n                    cancelToken,\r\n                    crcExclusions,\r\n                    scanner.ScanSubfolders,\r\n                    scanner.ScanInsideArchives,\r\n                    scanner.MergeRelatedFiles,\r\n                    fileScanCallback);\r\n            }\r\n            else\r\n            {\r\n                throw new Exception(\"Emulator profile format not supported.\");\r\n            }\r\n\r","sourceCodeStart":231,"sourceCodeEnd":267,"githubUrl":"https://github.com/JosefNemec/Playnite/blob/5911f4e964e628aa7a69c2030ab35101afa63067/source/Playnite/Emulators/Scanner.cs#L231-L267","documentation":"Thrown when a scanner config references a built-in emulator profile whose backing definition (EmulatorDefinitionProfile) cannot be resolved via Emulation.GetProfile. The built-in profile object exists on the emulator (it was found by Id), but its definition name no longer maps to any profile in the loaded Emulation.Definitions for that emulator's BuiltInConfigId. This indicates a stale or out-of-sync built-in profile reference.","triggerScenarios":"Calling ScanDirectory/scan with a ScanConfig whose EmulatorProfileId starts with BuiltInEmulatorProfile.ProfilePrefix, where emulator.BuiltinProfiles contains a matching profile (so builtinProfile != null), but Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName) returns null. Happens when BuiltInConfigId is empty/wrong or the built-in emulator definition file is missing or renamed.","commonSituations":"An emulator definition file was removed or its profile renamed in a Playnite update; user manually edited emulator config and pointed BuiltInConfigId at a non-existent definition; built-in definitions failed to load from disk.","solutions":["Verify emulator.BuiltInConfigId matches a valid id present in Emulation.Definitions before scanning.","Re-select the built-in profile in the emulator configuration UI so the stored BuiltInProfileName matches an existing definition.","Ensure built-in emulator definition files are present and load correctly (check Emulation.Definitions is populated)."],"exampleFix":"// before\nbuiltinProfileDef = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);\nif (builtinProfileDef == null) { throw new Exception(\"Assigned built-in emulator profile definition not found.\"); }\n\n// after — guard before scanning\nvar def = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);\nif (def == null) {\n    logger.Warn($\"Built-in profile definition '{builtinProfile.BuiltInProfileName}' for emulator '{emulator.BuiltInConfigId}' missing; skipping scan.\");\n    return new List<ScannedGame>();\n}","handlingStrategy":"validation","validationCode":"// Before scanning, confirm the built-in profile definition resolves.\nvar def = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);\nif (def == null) { /* skip scan, log, or prompt user to reconfigure */ return; }","typeGuard":"static bool BuiltInProfileDefinitionExists(Emulator emu, BuiltInEmulatorProfile profile) => Emulation.GetProfile(emu.BuiltInConfigId, profile.BuiltInProfileName) != null;","tryCatchPattern":null,"preventionTips":["Validate BuiltInConfigId is set on every emulator before allowing scans.","After Playnite upgrades, run a consistency pass that resolves each saved built-in profile name against current definitions.","Surface unresolved profile definitions in the emulator editor so users fix them before scanning."],"tags":["emulator","scanner","configuration","null-check"],"backgroundTag":null,"analyzedSha":"5911f4e964e628aa7a69c2030ab35101afa63067","analyzedAt":"2026-08-13T17:38:25.713Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}