我半定期地遇到以下问题:我对 XAML 或其使用的某些资源进行了更改,当我在 Debug模式下加载 Silverlight 项目时,它只能达到旋转的 Silverlight 加载动画。
我尝试将 VS08 调试器附加到进程,但此时它没有执行任何操作(在 Silverlight 中后工作正常,但之前不行。)
从以前的经验来看,我注意到当 XAML 或其中的资源出现问题时就会发生这种情况,但到目前为止我唯一的解决方案是逐行剖析代码,直到发现问题为止。
有没有一种简单的方法来调试/诊断这些情况?
更新
我找到了this question在一些帮助下,但它仍然没有提供调试此类问题的好方法。
最佳答案
调试起来确实很痛苦,但我最终发现问题隐藏在我们的一个自定义控件的构造函数中(它正在寻找不存在的资源。)真正的问题不是修复问题但找到了。
我发现 IE 响应从 Silverlight 传递到 DOM 的异常,但在 Chrome 浏览器(我使用的)中却没有得到同样类型的反馈。这个解决方案实际上有很大帮助(甚至比IE提示)是将App.xaml.cs中的ReportErrorToDOM()方法修改为以下内容:
private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
{
string errorMsg = String.Empty;
try
{
errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
}
catch (Exception)
{
#if DEBUG
MessageBox.Show(errorMsg);
#endif
}
}
这为您提供了 XAML 中问题开始的位置。它不是一个理想的调试器,但它确实有帮助。
关于silverlight - 如何在 Silverlight 中调试 XAML 解析错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389454/