{"record":{"id":"3913759cd370122b","repo":"rtk-ai/rtk","slug":"legacy-dictionary-format-is-unsupported","errorCode":null,"errorMessage":"legacy dictionary format is unsupported","messagePattern":"legacy dictionary format is unsupported","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/cmds/dotnet/binlog.rs","lineNumber":512,"sourceCode":"\n    if (file_format_version < 13 && read_importance) || (flags & FLAG_IMPORTANCE != 0) {\n        let _ = reader.read_7bit_i32()?;\n    }\n\n    Ok(result)\n}\n\nfn skip_build_event_context(reader: &mut BinReader<'_>, file_format_version: i32) -> Result<()> {\n    let count = if file_format_version > 1 { 7 } else { 6 };\n    for _ in 0..count {\n        let _ = reader.read_7bit_i32()?;\n    }\n    Ok(())\n}\n\nfn skip_string_dictionary(reader: &mut BinReader<'_>, file_format_version: i32) -> Result<()> {\n    if file_format_version < 10 {\n        anyhow::bail!(\"legacy dictionary format is unsupported\");\n    }\n\n    let _ = reader.read_7bit_i32()?;\n    Ok(())\n}\n\nfn read_optional_string(\n    reader: &mut BinReader<'_>,\n    parsed: &ParsedBinlog,\n) -> Result<Option<String>> {\n    read_deduplicated_string(reader, parsed)\n}\n\nfn read_deduplicated_string(\n    reader: &mut BinReader<'_>,\n    parsed: &ParsedBinlog,\n) -> Result<Option<String>> {\n    let index = reader.read_7bit_i32()?;","sourceCodeStart":494,"sourceCodeEnd":530,"githubUrl":"https://github.com/rtk-ai/rtk/blob/36788f6bd4932037caac5cbb1d15d6e2fb9f33da/src/cmds/dotnet/binlog.rs#L494-L530","documentation":"skip_string_dictionary rejects binlog fileFormatVersion < 10, the legacy string-dictionary layout introduced before the modern format. This reader only understands the post-v10 dictionary encoding, so old binlogs fail explicitly.","triggerScenarios":"read_event_fields encounters an event referencing the string dictionary while the binlog header's fileFormatVersion is below 10 — i.e., a binlog from a very old MSBuild (pre-2018 era, MSBuild 15.3 and earlier).","commonSituations":"Replaying ancient archived .binlog artifacts; legacy CI servers with very old .NET Framework MSBuild; vendored sample binlogs from old repos.","solutions":["Regenerate the log with a modern .NET SDK / MSBuild 17 (emits format 18)","Do not attempt to parse binlogs older than format 10 with this tool","Find a newer artifact, or convert the log via MSBuild Structured Log Viewer then re-export"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"fn binlog_supports_dictionary(bytes: &[u8]) -> bool {\n    if bytes.len() < 12 { return false; }\n    i32::from_le_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]) >= 10\n}","typeGuard":null,"tryCatchPattern":"match parse_events_from_binlog(&path) {\n    Ok(b) => use_events(&b),\n    Err(e) if e.to_string().contains(\"legacy dictionary\") => {\n        eprintln!(\"pre-v10 binlog not supported; regenerate with a modern SDK\");\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Drop support targets below MSBuild 15.5-era formats","Refresh old archived logs with new builds","Document minimum supported binlog version for your tooling"],"tags":["dotnet","binlog","legacy","version-compatibility"],"backgroundTag":"unsupported-format-version","analyzedSha":"36788f6bd4932037caac5cbb1d15d6e2fb9f33da","analyzedAt":"2026-09-03T16:33:57.738Z","contentChangedAt":"2026-09-03T16:33:57.738Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}