VS2012 /共混物5:调试异常(仅)在设计视图中存在的(VS2012/ Blend 5: Deb

2019-06-26 15:59发布

我使用C#和XAML开发Metro风格的应用程序(适用于Windows 8)。 我已经建立了我的ViewModels用作设计时datacontexts,就像这样:

xmlns:vm="using:hub.ViewModels"
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type=vm:ViewModels

运行时,我的应用程序看似完美,但在设计意见VS 2012和混合两者,我偶尔会得到这个(无益的)错误信息:

An Exception was thrown. TargetException: Error in the application.
Stacktrace
at System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
InnerException: None

只是发生在设计视图-这意味着我不能设置周围的一切我INotifyPropertyChanged的()事件断点。

什么是调试设计时错误的最好方法?

Answer 1:

如果发生这种情况持续或半持续,您可以将调试器附加到XAML设计:

  1. 启动Visual Studio; 打开你的项目,并打开一个XAML文件,引起了XAML设计加载

  2. 启动Visual Studio的第二个实例。 打开您的项目,但要确保没有XAML文件是开放的。

  3. 确保仅我的代码被禁用:从工具菜单,选择选项 。 选择调试类别。 在常规页面上,确保旁边的复选框启用仅我的代码没有被选中。

  4. Debug菜单,选择例外...然后勾选剑复选框公共语言运行时异常 。 这将使所有CLR异常的第一次机会处理。 如果您知道特定类型的异常,则可以启用第一个机会为处理只是类型。

  5. Debug菜单,选择附加到进程 。 在附加到:字段中,单击选择...并检查管理(V4.5,V4.0)的列表项,然后单击确定

    这是必要的,因为调试器可能误测的过程作为一个本机进程,如果它当所述工艺执行本机代码附着。 如果您的项目包含本地代码,你需要检查在列表中的本地复选框,以及(你可以调试同时托管和本机代码)。

  6. 可用进程列表中,找到对应于您的项目xdesproc.exe,然后单击附加

    如果有多个进程(通常是因为你有多个项目打开或因为设计师是重装或者最近已经重新加载),它可以是很难确定哪个设计师的过程属于哪个Visual Studio的实例。 这是最简单的往往只是附着于所有的人。 像一个工具的Process Explorer可以帮助你找出设计过程属于Visual Studio中的哪个实例其中。

    注意:不要将调试器附加到一个设计师处理(xdesproc)属于Visual Studio中使用的是用于调试的同一个实例:这样做很可能会导致Visual Studio挂起。 你必须始终使用Visual Studio的两个不同的实例。

  7. 做你需要做的,瑞普的bug。 当它发生时,调试器将打破在这里抛出异常的点。 调试器应加载符号的组件。



Answer 2:

我来到这里,同时寻找如何调试设计师时刻的问题,虽然我没有同样的问题rikkit信息。 但是......我分享解决了相关的问题,以防万一别人有同样的问题来到这里还有:

请确保您已为“启用”的“启用/禁用项目代码”切换按钮设置......在VS /混合2015它的XAML编辑器下方有一个小图标,如下所示 。

如果是残疾人,这可能是你的设计时实例似乎并不奏效的原因。

此外,如果禁用并尝试使用第二VS实例来调试,那么当你连接到XDesProc您在设置任何断点代码后会报告说,他们“目前不会受到打击。(因为)没有符号已经加载此文件”。 你可能会认为你需要以某种方式加载符号,但如果你打开模块窗口试图这样做,你甚至不会看到你的模块在列表中。

我失去了在这个问题上一两个小时,因为此设置被禁用的。 希望这可以帮助别人做不一样的。



Answer 3:

我不知道这件事,但是我相信你可以检查IsInDesignModeProperty场。 我remeber不得不上的WinForms这样做的时候。

也看看这个链接故障排除WPF设计加载失败



文章来源: VS2012/ Blend 5: Debugging an Exception (only) occurring in design view