From 5dd4c2c6822d0eb762495c415f5706e530fd08b2 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 31 Dec 2023 17:18:21 +0100 Subject: [PATCH] Add DumpMetadataInfo in MetadataTreeNode --- ILSpy/Metadata/MetadataTreeNode.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ILSpy/Metadata/MetadataTreeNode.cs b/ILSpy/Metadata/MetadataTreeNode.cs index 7bcbec810..cbbd6d0a7 100644 --- a/ILSpy/Metadata/MetadataTreeNode.cs +++ b/ILSpy/Metadata/MetadataTreeNode.cs @@ -58,6 +58,34 @@ namespace ICSharpCode.ILSpy.Metadata public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) { language.WriteCommentLine(output, title); + + DumpMetadataInfo(language, output, this.metadataFile.Metadata); + } + + internal static void DumpMetadataInfo(Language language, ITextOutput output, MetadataReader metadata) + { + language.WriteCommentLine(output, "MetadataKind: " + metadata.MetadataKind); + language.WriteCommentLine(output, "MetadataVersion: " + metadata.MetadataVersion); + + if (metadata.DebugMetadataHeader is { } header) + { + output.WriteLine(); + language.WriteCommentLine(output, "Header:"); + language.WriteCommentLine(output, "Id: " + header.Id.ToHexString(header.Id.Length)); + language.WriteCommentLine(output, "EntryPoint: " + MetadataTokens.GetToken(header.EntryPoint).ToString("X8")); + } + + output.WriteLine(); + language.WriteCommentLine(output, "Tables:"); + + foreach (var table in Enum.GetValues()) + { + int count = metadata.GetTableRowCount(table); + if (count > 0) + { + language.WriteCommentLine(output, $"{(byte)table:X2} {table}: {count} rows"); + } + } } protected override void LoadChildren()