Since the input file goes through ILSpyX's FileLoaderRegistry, an XALZ
module passed directly to ilspycmd already decompresses on the fly. The
crash in the issue is in reference resolution: a Xamarin app folder
holds every assembly compressed, and UniversalAssemblyResolver opened
the referenced sibling as a plain PE image. In the CLI that failure was
swallowed, so the reference resolved to null and the output degraded
(enum members printed as casts of raw values, and so on). The UI does
not have this problem because its resolver only asks the universal
resolver for the file name and then loads it through the loaders.
Rather than re-implementing the resolver in the CLI, the universal
resolver gains one overridable step - turning a found file into a
module - and the CLI overrides it to run the same loader loop the input
file uses, falling back to the plain PE path for anything no loader
claims.
Assisted-by: Claude:claude-fable-5-1:Claude Code