Immutable. This exact content is served forever at /api/v1/blob/ecb3d93f0a1b7157.
--- name: dotnet-inspect-metadata version: 0.1.0 description: 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. --- # 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. ```bash 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: ```bash 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: ```bash 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: ```bash 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 `--heap` for one exact coordinate: ```bash dnx dotnet-inspect -y -- library MyLib.dll \ -S "Metadata: #Strings" --rows 20 dnx dotnet-inspect -y -- library MyLib.dll --heap "#Strings:0x1a4" ``` 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.