Как декомпилировать сложный BAML в действительный XAML - PullRequest
5 голосов
/ 15 июня 2011

Я попробовал 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 Ответ

6 голосов
/ 15 июня 2011

Не уверен, поможет ли это вам, но если вы можете запустить приложение, вы можете использовать Snoop для запуска через структуру приложения WPF.

Другие опции:

  • dotPeek (но я считаю, что для этого нужен плагин Baml4dotPeek , основанный на Baml Viewer for Reflector, который, как вы сказали, не работал.)
  • JustDecompile (я полагаю, вы должны зарегистрироваться в Telerik)
  • Вудсток для WPF

I 'Мы только пробовали Snoop и ему это очень понравилось, но это, похоже, не решило твою проблему.

...