如何将复杂的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的补丁吗?
不确定这是否会对您有所帮助,但如果您可以运行应用程序,则可以使用Snoop来运行整个WPF应用程序的结构。
其他选项:
- dotPeek(但我相信它需要Baml4dotPeek插件,它基于反射镜的Baml查看器,正如你所说,它不起作用。)
- JustDecompile(我相信你必须在Telerik注册)
- WPF用木材
我只试过Snoop,非常喜欢它,但这似乎并不能解决你的问题。