Perfare/Il2CppDumper · error · NotSupportedException
ERROR: Metadata file supplied is not a supported version
Error message
ERROR: Metadata file supplied is not a supported version[{version}]. What it means
Thrown as NotSupportedException when the metadata version is sane (0-1000) but outside the supported range 16-31. Il2CppDumper only implements metadata layouts for il2cpp versions 16 through 31 (roughly Unity 5.5 through recent 2021+).
Solutions
- Check the metadata version (integer at file offset 4) and update Il2CppDumper to the latest release for new Unity versions.
- For version <16, use an older Il2CppDumper release or legacy forks that support old il2cpp layouts.
- Do not hand-edit the version field; the layout will not match and parsing will fail later.
- Determine the Unity version from the game (e.g. unity default resources or globalgamemanagers) and pick a matching tool.
Defensive patterns
Strategy: validation
Validate before calling
int version = BitConverter.ToInt32(File.ReadAllBytes(metadataPath), 4); bool supported = version is >= 16 and <= 31;
Try / catch
try { var md = new Metadata(stream); }
catch (NotSupportedException ex) when (ex.Message.Contains("not a supported version")) { /* update dumper or use legacy tool */ } Prevention
- Read the version at offset 4 and compare against the dumper's supported range first.
- Keep Il2CppDumper updated for newer Unity versions.
- For pre-16 metadata use a legacy fork; never fake the version field.
When it happens
Trigger: Calling new Metadata(stream) with a global-metadata.dat whose version field is <16 or >31 — very old Unity builds (version 15 and below) or very new Unity/il2cpp versions not yet supported by this dumper build.
Common situations: Dumping a game built on a newer Unity than the dumper supports, or an extremely old (pre-2017) il2cpp build; also modified metadata where the version field was tampered with.
Related errors
AI-assisted analysis of Perfare/Il2CppDumper@4741d46ba9 (2026-09-11).
Data as JSON: /api/errors/1e0169bc5f1d5779.
Report an issue: GitHub.
Appendix: source
Thrown at Il2CppDumper/Il2Cpp/Metadata.cs:57
public Il2CppRGCTXDefinition[] rgctxEntries;
private readonly Dictionary<uint, string> stringCache = new();
public Metadata(Stream stream) : base(stream)
{
var sanity = ReadUInt32();
if (sanity != 0xFAB11BAF)
{
throw new InvalidDataException("ERROR: Metadata file supplied is not valid metadata file.");
}
var version = ReadInt32();
if (version < 0 || version > 1000)
{
throw new InvalidDataException("ERROR: Metadata file supplied is not valid metadata file.");
}
if (version < 16 || version > 31)
{
throw new NotSupportedException($"ERROR: Metadata file supplied is not a supported version[{version}].");
}
Version = version;
header = ReadClass<Il2CppGlobalMetadataHeader>(0);
if (version == 24)
{
if (header.stringLiteralOffset == 264)
{
Version = 24.2;
header = ReadClass<Il2CppGlobalMetadataHeader>(0);
}
else
{
imageDefs = ReadMetadataClassArray<Il2CppImageDefinition>(header.imagesOffset, header.imagesSize);
if (imageDefs.Any(x => x.token != 1))
{
Version = 24.1;
}
}View on GitHub (pinned to 4741d46ba9)