dotnet-inspect-metadata

v2026.09.25

Query raw ECMA-335 assembly metadata — discover table and heap sections, inspect decoded rows and handles, address table or heap coordinates, and project bounded machine-readable results.

GitHub
Install command
npx skhub add richlander/dotnet-inspect-metadata
Markdown
SKILL.md

dotnet-inspect: raw assembly metadata

Use this skill when API views are too high-level and you need the assembly's actual ECMA-335 tables, handles, flags, or heap values. The metadata lens inspects one assembly image and never loads the inspected assembly.

dnx dotnet-inspect -y -- <command>

Discover before reading

Metadata tables are unbounded and explicit-only: no verbosity or base category renders them automatically. Structural discovery lists the authored metadata family without running its producers; add --effective to identify the tables and heaps that have data for this image:

dnx dotnet-inspect -y -- library MyLib.dll -D @Metadata
dnx dotnet-inspect -y -- library MyLib.dll -D @Metadata --effective
dnx dotnet-inspect -y -- library MyLib.dll -S @Metadata --count
dnx dotnet-inspect -y -- library MyLib.dll -D "Metadata: TypeDef" --effective

Metadata: Image reports image-level facts. Table sections such as Metadata: TypeDef, Metadata: MethodDef, and Metadata: MemberRef decode handles, ranges, heap values, and flags instead of dumping raw integers.

Query one table

The # column is the real metadata row id. --rows therefore addresses table rows by displayed, 1-based metadata position rather than by the current page. Ranges are inclusive, so 100..199 selects 100 rows:

dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: MethodDef" --rows 100..199 --tsv
dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: TypeRef" --columns "Name,Namespace,ResolutionScope" --jsonl

Table indices are accepted as input aliases when following a token:

dnx dotnet-inspect -y -- library MyLib.dll -S "Metadata: 0x02"

That is the TypeDef table. A full token such as 0x02000015 addresses a row, not a table, and is rejected by -S.

Inspect heaps

The heap sections are Metadata: #Strings, Metadata: #Blob, Metadata: #GUID, and Metadata: #US. Use library coordinate for one exact coordinate:

dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: #Strings" --rows 20
dnx dotnet-inspect -y -- library coordinate "#Strings:0x1a4" \
  --library MyLib.dll

Heap addresses are decimal unless prefixed with 0x. String and blob listings contain distinct values referenced by projected table rows, not a claim of complete heap enumeration; each listing reports its coverage.

Selecting @Metadata for a package that resolves to several assemblies is ambiguous and fails. Choose one DLL with library, or use package Foo --library only when the package has one unambiguous library.

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.25

Published

Sep 25, 2026

Category

Uncategorized

License

Not specified

Source path

skills/metadata

Default branch

main

Latest commit

dfd230e

Tree SHA

a0f3e01