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

C# 如何在设计模式下调试WPF用户控件?,c#,wpf,visual-studio,user-controls,design-time,C#,Wpf,Visual Studio,User Controls,Design Time,我创建了一个wpf用户控件,其中包含一个标签。标签的前景设置会根据检查多个条件的某些代码进行更改。控件中的标签在设计时显示了错误的颜色,但我无法确定如何在设计时调试用户控件,以便它捕获断点(从而确定我的逻辑哪里有缺陷)。控件上的颜色在运行时是正确的,只有在设计时才显示不正确。以下是在设计时调试控件的步骤: 启动Visual Studio的第二个实例 从“调试”菜单附加到第一个实例 在第二个实例中,打开控件的源代码 在适当的位置设置断点 在第一个VS实例中,重新加载设计器 注意,这种技术并不局

我创建了一个wpf用户控件,其中包含一个标签。标签的前景设置会根据检查多个条件的某些代码进行更改。控件中的标签在设计时显示了错误的颜色,但我无法确定如何在设计时调试用户控件,以便它捕获断点(从而确定我的逻辑哪里有缺陷)。控件上的颜色在运行时是正确的,只有在设计时才显示不正确。

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

  • 启动Visual Studio的第二个实例
  • 从“调试”菜单附加到第一个实例
  • 在第二个实例中,打开控件的源代码
  • 在适当的位置设置断点
  • 在第一个VS实例中,重新加载设计器

注意,这种技术并不局限于控件;您还可以使用它来调试VS扩展,或在Visual Studio中执行的任何操作。

要调试控件程序集,我使用以下解决方案

  • 使用“项目”菜单打开项目的属性

  • 显示
    Debug
    (Déboguer法语)

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

    在我的电脑上是

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

  • 填充命令行的参数,使其等于解决方案的文件(蓝色矩形)

  • 指定工作目录。由于参数中没有指定目录,工作目录相当于包含
    .sln
    文件的目录。(绿色矩形)

    在我的电脑上是

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

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

    然后,我可以在第二个VisualStudio应用程序的Designer中使用控件,并查看在第一个窗口中定义断点时会发生什么


    这在WinForms控件中非常有效。

    当我尝试这种方法时,我在第二个实例中设置的断点会说“断点当前不会被命中。没有为此文档加载任何符号”,而且它们永远不会被捕获。@WiredWiz,这很奇怪。。。我多次使用这种技术(使用WPF标记扩展、值转换器等),它对我来说总是很好。我相信OP早就解决了这个问题,但对于其他任何遇到“断点当前不会被击中。没有为此文档加载任何符号”的人来说确保已切换“启用项目代码”按钮。禁用该功能可能会导致该特定问题。关于这个类似问题的答案之一是值得信任的:为了便于参考,这里有文档“VisualStudio中的设计时调试”:它详细介绍了如何附加到VisualStudio的第一个实例。