将 Baml 文件转换为可用的 XDocument 进行解析

Convert Baml file into usable XDocument for parsing

我希望能够针对 Xaml 编写单元测试以查找不正确的模式。我们遇到的问题是 Xaml 仍然有效并且可以编译,而 "works" 很好但可能导致隐藏问题或缺乏一致性。为了帮助解决这个问题,我们想针对这些文件编写单元测试。

一个简单的示例:如果您定义了一个网格,并且网格列绑定到基础 object 上的数字字段,那么根据我们的内部标准,网格的列标题应该具有适当的右对齐模板.将模板从定义中移除将产生一个左对齐的列 header,除了我们的内部标准之外,它并没有真正破坏任何东西。鉴于这基本上是 xml,我应该能够轻松地编写一个测试来询问 xml 元素,检测数字列的存在并检查以确保该文件还定义了一个标题模板右对齐。这样我就不必依赖开发人员或 QA 来涵盖像这样易于测试的内容。

我在单元测试过程中可以访问程序集,并且可以通过读取清单资源流来获取所有 baml 资源文件。但我无法弄清楚如何将它们读入一种有用的格式,我可以将其加载到 XDocument 之类的东西中进行解析和阅读。有没有人这样做过?我试过使用 Baml2006Reader 等...但没有取得任何成功。

如果您想将 BAML 转换为 XAML,您可以在 GitHub.

上查看以下 BamlTranslator class

它使用BinaryReader反编译BAML。