如何将复杂的BAML反编译为有效的XAML

本文关键字:编译 有效 XAML BAML 复杂 | 更新日期: 2023-09-27 17:59:07

我尝试了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()

我尝试了.Net反射器的Baml查看器,但它无法生成有效的XAML。

主要问题是绑定引用了错误的StaticResource。

例如(namedViews是CollectionViewSource):

   Visibility="{Binding Path=Value, Converter={StaticResource namedViews}}"
   ToolTip="{StaticResource namedViews}"

还有哪些应用程序可以反编译BAML?有BAML Viewer的补丁吗?

如何将复杂的BAML反编译为有效的XAML

不确定这是否会对您有所帮助,但如果您可以运行应用程序,则可以使用Snoop来运行整个WPF应用程序的结构。

其他选项:

  • dotPeek(但我相信它需要Baml4dotPeek插件,它基于反射镜的Baml查看器,正如你所说,它不起作用。)
  • JustDecompile(我相信你必须在Telerik注册)
  • WPF用木材

我只试过Snoop,非常喜欢它,但这似乎并不能解决你的问题。