如何在设计模式下调试WPF用户控件?

10

我创建了一个包含标签的WPF用户控件。该标签的前景设置基于检查若干条件的代码而更改。在设计时,我的控件中的标签显示错误的颜色,但我无法找出如何在设计时调试我的用户控件,以便它可以捕获断点(从而找出逻辑有误的地方)。控件的颜色在运行时是正确的,只是在设计时显示不正确。

2个回答

8

以下是在设计时调试控件的步骤:

  • 启动Visual Studio的第二个实例。
  • 从Debug菜单(或在VS2022中,附加到WPFSurface)中附加到第一个实例。
  • 在第二个实例中,打开控件的源代码。
  • 在适当的位置设置断点。
  • 在第一个VS实例中重新加载设计器。

请注意,这种技术不仅限于控件,您还可以将其用于调试VS扩展或任何在Visual Studio内执行的内容。


2
当我尝试这种方法时,我在第二个实例中设置的断点会显示“当前不会命中断点。此文档尚未加载任何符号”,并且它们永远不会被捕获。 - WiredWiz
@WiredWiz,这很奇怪...我用过这种技术很多次(使用WPF标记扩展、值转换器等),对我来说总是很好用的。 - Thomas Levesque
2
我相信OP早就解决了这个问题,但是对于其他遇到“断点当前无法命中。未为此文档加载符号。”的人,请确保启用了项目代码按钮。禁用它可能会导致特定的问题。感谢这个类似问题上的一个答案:https://dev59.com/JGbWa4cB1Zd3GeqPZ7wl - indigophoenix
参考文档是“在Visual Studio中设计时进行调试”的:https://learn.microsoft.com/en-us/visualstudio/debugger/walkthrough-debugging-at-design-time?view=vs-2019它详细说明了如何附加到您的第一个Visual Studio实例。 - Michaël Déry

0

为了调试Controls程序集,我使用以下解决方案。

  1. 使用项目菜单打开项目属性

  2. 显示Debug(法语中为Déboguer)

  3. Start extern program设置为devenv.exe(红色矩形)

    在我的电脑上是

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe

  4. 填写命令行参数,使其等于解决方案文件(蓝色矩形)

  5. 指定工作目录。由于目录未在参数中指定,因此工作目录等同于包含.sln文件的目录(绿色矩形)

    在我的电脑上是

    D:\@Projets\VisualBasic.Net\Tramex.Controls.Net\Test

enter image description here

现在,第一次开始调试时,会启动一个新的Visual Studio。这个阶段可能需要几分钟(在我的电脑上需要5分钟)。但这只是我第一次启动调试过程时。

然后,我可以在第二个Visual Studio应用程序中使用设计器中的控件,并查看在第一个窗口中定义断点时发生了什么。

这对WinForms控件完美地起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接