JosefNemec/Playnite · error · Exception

Assigned built-in emulator profile definition not found.

Error message

Assigned built-in emulator profile definition not found.

What it means

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.

Source

Thrown at source/Playnite/Emulators/Scanner.cs:249

                    cancelToken,
                    crcExclusions,
                    scanner.ScanSubfolders,
                    scanner.ScanInsideArchives,
                    scanner.MergeRelatedFiles,
                    fileScanCallback);
            }
            else if (scanner.EmulatorProfileId.StartsWith(BuiltInEmulatorProfile.ProfilePrefix, StringComparison.Ordinal))
            {
                builtinProfile = emulator.BuiltinProfiles?.FirstOrDefault(a => a.Id == scanner.EmulatorProfileId);
                if (builtinProfile == null)
                {
                    throw new Exception("Assigned built-in emulator profile not found.");
                }

                builtinProfileDef = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);
                if (builtinProfileDef == null)
                {
                    throw new Exception("Assigned built-in emulator profile definition not found.");
                }

                games = ScanDirectory(
                    dirToScan,
                    emulator,
                    builtinProfile,
                    cancelToken,
                    crcExclusions,
                    scanner.ScanSubfolders,
                    scanner.ScanInsideArchives,
                    scanner.MergeRelatedFiles,
                    fileScanCallback);
            }
            else
            {
                throw new Exception("Emulator profile format not supported.");
            }

View on GitHub (pinned to 5911f4e964)

Solutions

  1. Verify emulator.BuiltInConfigId matches a valid id present in Emulation.Definitions before scanning.
  2. Re-select the built-in profile in the emulator configuration UI so the stored BuiltInProfileName matches an existing definition.
  3. Ensure built-in emulator definition files are present and load correctly (check Emulation.Definitions is populated).

Example fix

// before
builtinProfileDef = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);
if (builtinProfileDef == null) { throw new Exception("Assigned built-in emulator profile definition not found."); }

// after — guard before scanning
var def = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);
if (def == null) {
    logger.Warn($"Built-in profile definition '{builtinProfile.BuiltInProfileName}' for emulator '{emulator.BuiltInConfigId}' missing; skipping scan.");
    return new List<ScannedGame>();
}
Defensive patterns

Strategy: validation

Validate before calling

// Before scanning, confirm the built-in profile definition resolves.
var def = Emulation.GetProfile(emulator.BuiltInConfigId, builtinProfile.BuiltInProfileName);
if (def == null) { /* skip scan, log, or prompt user to reconfigure */ return; }

Type guard

static bool BuiltInProfileDefinitionExists(Emulator emu, BuiltInEmulatorProfile profile) => Emulation.GetProfile(emu.BuiltInConfigId, profile.BuiltInProfileName) != null;

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13). Data as JSON: /api/errors/afb13a8a0854bc05. Report an issue: GitHub.