Как декомпилировать сложный 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 и мне это очень нравится, но это, похоже, не решило твою проблему.

Другие вопросы по тегам