mirror of
https://github.com/icsharpcode/ILSpy.git
synced 2026-10-12 02:15:58 +00:00
Whether an element is a markup extension is decided by walking its base types, and that walk leaves the assemblies the document's own assembly references: WPFLocalizeExtension's LocExtension, in the report, derives from a type in XAMLMarkupExtensions, which the application never references itself. Only the assemblies named by the module were loaded, so the base type resolved to nothing, the extension was not recognised, and it went out as an element tree carrying the decompiler's own placeholder namespace - https://github.com/icsharpcode/ILSpy - into the XAML. The reference closure is now followed transitively. It is built once per assembly, and the cost is bounded: for a .NET 8 WPF application the type system grows from 87 to 158 modules and from 92 to 118 ms, for a .NET Framework one from 9 to 24 modules and 39 to 44 ms. Over the 1158 BAML documents of a DevExpress theme assembly the output does not change at all - this only decides cases that used to resolve to nothing. Assisted-by: Claude:claude-opus-5:Claude Code