Как декомпилировать сложный BAML в действительный XAML
Я попробовал ILSpy, но это не удалось:
System.NotImplementedException: StaticResourceStart
в Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.ProcessNext()
в Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.ReadInternal()
в Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.Read()
в System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
в System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
в System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
в ILSpy.BamlDecompiler.BamlResourceEntryNode.LoadIntoDocument(IAssemblyResolver resolver, AssemblyDefinition asm, Stream stream)
в ILSpy.BamlDecompiler.BamlResourceEntryNode.LoadBaml(AvalonEditTextOutput output)
в ILSpy.BamlDecompiler.BamlResourceEntryNode.<>c__DisplayClass3.<View>b__1()
Я пробовал Baml Viewer для.Net Reflector, но он не смог сгенерировать действительный XAML.
Основная проблема заключалась в том, что Binding ссылался на неправильный StaticResource.
Например (namedViews - это CollectionViewSource):
Visibility="{Binding Path=Value, Converter={StaticResource namedViews}}"
ToolTip="{StaticResource namedViews}"
Какие еще приложения существуют для декомпиляции BAML? Любой патч для BAML Viewer?
1 ответ
Не уверен, поможет ли это вам, но если вы можете запустить приложение, вы можете использовать Snoop для запуска через структуру приложения WPF.
Другие опции:
- dotPeek (но я считаю, что для этого нужен плагин Baml4dotPeek, основанный на Baml Viewer for Reflector, который, как вы сказали, не работал.)
- JustDecompile (вы должны зарегистрироваться в Telerik, я считаю)
- Вудсток для WPF
Я только пробовал Snoop и мне это очень нравится, но это, похоже, не решило твою проблему.