c# - 调试 Visual Studio 设计器

标签 c# wpf visual-studio-2010 xaml

打开 Visual Studio 设计器时遇到异常。

您可以找到完整的堆栈跟踪here .

我已经问过 question我在其中解释了从 XAML 传递到设计器时发生的崩溃。

answer建议使用 Visual Studio 的第二个实例来调试设计器。

我尝试过以下方法:

  • 打开 Visual Studio 的第二个实例,附加 devenv.exe 进程,在 InitializeComponent 上设置断点(由我的 RadWindow 的构造函数调用) )。
  • 转到 Visual Studio 的第一个实例,打开设计器。

什么也没发生(即未到达断点)。您知道如何执行调试吗?

提前谢谢您。

最佳答案

你的方法几乎是正确的。但是,管理设计时 WPF 渲染的过程因 Visual Studio 版本而异:

Visual Studio 2010 -> devenv.exe
Visual Studio 2012+ -> XDesProc.exe
Visual Studio 2022 -> WpfSurface.exe

方法:

  1. 使用相同的解决方案打开第二个 Visual Studio。

  2. 在第二个 VS 中设置断点。

  3. 构建解决方案(在任一 VS 中)。

  4. VS2012 及更高版本:
    发生的某些缓存会阻止命中断点,因此为了规避这种情况,请通过 Windows 任务管理器结束所有正在运行的 WPF 渲染进程。

  5. (VS2012 及更高版本):
    要重新启动渲染过程,请在第一个 VS 实例中打开任何 xaml 文档(不是您想要调试的文档)。新的渲染过程开始!

  6. 在第二个 VS 实例中,附加到新启动的渲染进程 (XDesProc.exe/devenv.exe/WpfSurface.exe)

  7. 在第一个VS中打开您想要调试的xaml文档。

  8. 断点命中!

注意:断点应为红色以表明它们处于事件状态。如果不是,则调试器使用的文件与 build 不匹配。如果是这样,请停止调试,结束渲染进程,重新构建并重试。

关于c# - 调试 Visual Studio 设计器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889803/

相关文章:

wpf - 确保按钮在 ScrollViewer 中获得焦点

wpf - 我是 WPF 引擎错误的发现者吗?

visual-studio-2010 - Ctrl+PageUp/PageDown 是否在 Visual Studio 2010 中工作?

c# - XNA - 保存 xml 文件时出现 UnauthorizedAccessException

c# - 为什么 OnDeserialization 不触发 XML 反序列化?

c# - 简单注入(inject)器 : Register ILogger<T> by using ILoggerFactory. CreateLogger<T>()

c# - 在 C# 中构建数据模板

c# - 串行端口数据形式的停止按钮功能使其无响应

visual-studio-2010 - x86 汇编语言的代码自动完成

c# - 从基类访问应用于派生类中方法的属性