【问题标题】:Process of debugging XAML Parsing errors for Windows 8调试 Windows 8 的 XAML 解析错误的过程
【发布时间】:2012-10-15 20:08:11
【问题描述】:

我正在寻找调试 XAML 错误的一般做法/方法。通常 C# 错误很容易查找并且足够具体以查找相关信息。但是,XAML 似乎只是抛出了一个通用的 XAML Parsing failed 错误:

我正在寻找一种通用的方法来处理这些错误并缩小可能对抛出的错误有用的文件、行号或任何其他信息。

【问题讨论】:

  • 该行和位置在发生错误的文件中。这应该是您通常正在编辑的任何文件。
  • @mydogisbox 我如何从错误中确定这个文件是什么?如果碰巧我正在处理多个文件,或者对我不知道的存储库进行了更改并且碰巧损坏了我当前的文件怎么办?最好找出发生错误的特定文件。

标签: c# xaml windows-8 microsoft-metro


【解决方案1】:

这是我用来在不清楚时识别导致 XAML 错误的文件的一种简洁方法...

用资源字典一一打开所有 XAML 文件,在打开的根元素后添加一个空格。再次在调试器中运行,直到出现故障点,当行号增加 1 时,您已找到该文件。

没有人可以为这种行为辩护。我只能想象框架资源加载方法是用流调用的,所以不知道它正在读取的文件的名称是什么,只是其中的位置。

需要改进。调用资源加载方法的框架部分应该发出调试消息或在某种上下文中传递名称,以便框架的较低部分可以发出合理的错误消息。

【讨论】:

    【解决方案2】:

    注意:我计划在继续学习并了解更多信息时扩展此功能。如果您想为这个答案做出贡献,我会将其更改为 CW,同时随时做出您认为合适的任何更改

    较小的更改 == 较小的范围错误

    一般来说,正如@DenDelimarsky 所说,进行小的更改并运行/调试代码是一个好的开始。在大多数情况下,这会将错误的范围缩小到您一直在工作的领域。

    但是,您可以使用以下一些其他技巧来缩小问题范围:

    搜索类:

    您针对异常 e 的具体消息指出:

    未能分配给属性“Windows.UI.XAML.ResourceDictionary.Source”(已添加重点)

    这意味着ResourceDicionary 类在分配属性Source 时遇到了麻烦。首先在您编辑的文件范围内执行搜索,然后,如果未发现错误,则在该类的整个解决方案中查找可能存在的任何错误。

    【讨论】:

      【解决方案3】:

      实际上,您所看到的是处理 XAML 错误的正常方法。不仅如此,您实际上还看到了 StandardStyles 之外的问题。此外,如果您遵循常规调试实践并在修改 XAML 后经常进行调试,通常很容易缩小问题范围。

      【讨论】:

      • 这实际上是从我的仓库中提取的。可以在家中的计算机上使用,但我的笔记本电脑无法正常工作,但再次提出了创建如何专门调试 XAML 的通用实践的想法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2014-12-04
      • 2012-11-25
      • 2015-02-12
      • 1970-01-01
      • 2014-05-01
      相关资源
      最近更新 更多