C# 调试Windows 8的XAML分析错误的过程

C# 调试Windows 8的XAML分析错误的过程,c#,xaml,windows-8,microsoft-metro,C#,Xaml,Windows 8,Microsoft Metro,我正在寻找调试XAML错误的一般实践/方法。通常情况下,C#错误很容易查找,并且足够具体,可以找到相关信息。但是,XAML似乎只是抛出一个通用的XAML解析失败的错误: 我正在寻找一种处理这些错误的通用方法,并缩小哪些文件、行号或任何其他信息可能对抛出的错误有用。实际上,您看到的是处理XAML错误的正常方法。除此之外,您实际上看到了标准样式之外的一个问题。此外,如果遵循常规的调试实践,并在修改XAML后经常进行调试,通常很容易缩小问题的范围 注意:我计划在继续前进并了解更多信息的同时扩展此功能

我正在寻找调试XAML错误的一般实践/方法。通常情况下,C#错误很容易查找,并且足够具体,可以找到相关信息。但是,XAML似乎只是抛出一个通用的
XAML解析失败的
错误:


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

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

注意:我计划在继续前进并了解更多信息的同时扩展此功能。如果你想对这个答案有所贡献,我将把它改成CW,同时,你可以随意做出任何你认为合适的改变

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

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

搜索类: 异常
e
的特定消息说明:

未能分配到属性“Windows.UI.XAML.ResourceDictionary.Source”(已添加强调)


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

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

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

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


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

行和位置位于发生错误的文件中。这应该是您通常正在编辑的任何文件。@mydogisbox如何从错误中确定此文件是什么?如果碰巧我正在处理多个文件,或者对回购协议进行了更改,而我不知道这些更改会损坏我当前的文件,该怎么办?找出发生错误的特定文件会很好。这实际上是从我的repo中提取的。可以在家里的电脑上工作,但我的笔记本电脑不能正常工作,但我还是想创建一个专门调试XAML的通用实践。