--list-* printed generic types without their `n arity suffix, yet -t only
accepted the exact reflection name, so a name copied straight from the listing
threw "Could not find type definition". The listing now prints the reflection
name, and -t resolves through a ladder of progressively looser, uniqueness-
checked rules: the engine's exact lookup, an arity- and nesting-separator-
insensitive FullName match, a case-insensitive match, a namespace-less simple
name, and a trailing segment path ("Dictionary.KeyCollection"). The input is
parsed with System.Reflection.Metadata.TypeName and reduced to its underlying
definition first, so assembly qualification, generic arguments, and
array/pointer/byref decorations cannot corrupt the comparison key. An ambiguous
name reports its candidates instead of guessing, and a miss prints name
suggestions and returns EX_DATAERR rather than dumping a stack trace.
Assisted-by: Claude:claude-opus-4-8:Claude Code
The portable-PDB writer carried its knobs (no-logo, pdb id, progress,
progress title) as a growing list of optional WritePdb parameters.
Turn the type into a configured instance whose options are properties,
and add EmbedSourceFiles (default true): when a PDB is generated next
to a project export whose .cs are already on disk, embedding the source
again is redundant, so the caller can turn it off. The per-document
checksum/hash is computed either way, so documents still resolve.
Assisted-by: Claude:claude-opus-4-8:Claude Code
stdout is the data channel: --resource may be writing a binary payload to
it. Update-check notices on stdout would tail-append to the binary stream
and corrupt extracted files. Move them to stderr (npm/cargo/pip
convention) so meta-output stays out of the data path.
--list-resources prints every leaf in the assembly's embedded
resources (including individual entries inside .resources containers).
--resource <name> extracts a single leaf. Names ending in .baml are
decompiled to XAML; everything else is emitted as raw bytes. Without
-o, BAML goes to stdout as text and binary leaves go to the binary
stdout stream. Unknown names exit with EX_DATAERR and print the
available leaves to stderr.
--decompile-baml is a modifier for -p that swaps in the new
BamlAwareWholeProjectDecompiler so .baml entries become .xaml Page
items in the generated project. Default -p behaviour is unchanged.
* Support batch PDB generation.
* Use `FileMode.Create` for output PDB files to ensure existing files are fully overwritten/truncated.
* Localize the string `Generating portable PDB...`.
* Refine `GeneratePdbForAssemblies` implementation.
* Replace direct calls to `explorer.exe` with the Shell API to prevent spawning an `explorer.exe` process that doesn't exit automatically on every call.
* Batch calls to `ShellHelper.OpenFolderAndSelectItems` instead of looping `OpenFolderAndSelectItem`.
* Localize the string `Open Explorer`.
* Fix `OpenCmdHere` malfunction when ILSpy is running from a different drive than the OS.
* Refine `GeneratePdbForAssemblies` implementation.
* Replace WinForms `FolderBrowserDialog` with WPF `OpenFolderDialog`.
* Add license header
* Exclude duplicate entries entered by the user within `OpenFolderAndSelectItems`.
* Explicitly declare that `ShellHelper.cs` is a module that allows Pinvoke.
* Use `FileMode.Create` for output PDB files to ensure existing files are fully overwritten/truncated.
* Show original filenames when generating PDBs to improve UX during batch processing.
* added mermaid class diagrammer
contributed from https://github.com/h0lg/netAmermaid - find earlier git history there
* reading from embedded resource instead of file
* swapped out icon to brand diagrammers as an ILSpy product
reusing linked ..\ILSpy\Images\ILSpy.ico from UI project
* added required ilspycmd options and routed call
* adjusted VS Code task to generate model.json required by the JS/CSS/HTML dev loop
* added debug launchSettings
* updated help command output
* using ILSpyX build info in generated diagrammers
removing unused code
* using explicit type where it's not obvious
* outputting in to a folder next to and named after the input assembly + " diagrammer" by default
* renamed diagrammer output to index.html
to support default web server configs in the wild
* improved instructions for creating an off-line diagrammer
* added developer-facing doco for how to edit the HTML/JS/CSS parts
* renamed to remove netAmermaid branding
* updated repo URL and doco link to new Wiki page
* copied over doco
* removed obsolete parts
* moved CLI doco into ILSpyCmd README
* removed end-user facing chapters that go into the Wiki from dev-facing doco
* updated to ilspycmd API and rebranded to ILSpy
* removed doco that's now in https://github.com/icsharpcode/ILSpy/wiki/Diagramming
* added tasks
When disassembling IL add a flag to enable showing sequence points. We
can already specify PDB loading; take advantage of that to provide
debug information for the decompiler.
When the `--il-sequence-points` flag is used the behavior is the same as
with `-il`, but sequence point information is aslo emitted. This leaves
things open to adding an `--il-metadata-tokens` flag too.