使用 Windows 7 和 Visual Studio 2010,我正在编写一个 C# 自定义用户控件。我在代码视图中编码了数周,最近当我尝试切换到设计模式时,Visual Studio 挂起,“没有响应”。我可以等一个小时,仍然没有任何反应。单击关闭按钮会显示“您要等待、关闭、重新启动并向 Microsoft 发送信息”对话框。
有没有办法(堆栈)跟踪设计者试图执行的代码?也许是设计时跟踪消息或断点?
使用 Windows 7 和 Visual Studio 2010,我正在编写一个 C# 自定义用户控件。我在代码视图中编码了数周,最近当我尝试切换到设计模式时,Visual Studio 挂起,“没有响应”。我可以等一个小时,仍然没有任何反应。单击关闭按钮会显示“您要等待、关闭、重新启动并向 Microsoft 发送信息”对话框。
有没有办法(堆栈)跟踪设计者试图执行的代码?也许是设计时跟踪消息或断点?
对于 Visual Studio 2010,这个答案就可以了。
对于 Visual Studio 2012 或更高版本,您需要做的实际上是调试 Visual Studio Designer 进程。您要调试的进程称为 XDesProc.exe
.
我执行以下操作:
如果您错过了它,或者需要重新启动这些步骤,请从第 (2) 步“关闭所有窗口”重新开始,杀死 XDesProc 实例。有时设计器启动一次并缓存值,您需要有一个干净、无异常的设计器来跟踪问题。
您可以调试 Visual Studio 设计器本身!打开 Visual Studio 的第二个实例,使用Tools -> Attach To Process
并附加到第一个 Visual Studio(即devenv.exe
)。
在 Visual Studio 实例 #2 (您在其中执行附加到进程的实例)中:在用户控件的构造函数上放置一个断点
在 Visual Studio 实例#1 中(原来的实例会卡住):打开你的用户控件所在的设计器,VS#2 中的断点将被命中。
您要调试的过程是XDesProc.exe
- 请参阅ABT 博士的回答。否则,该过程与 Visual Studio 2010/2013 相同。
答案在演练:在设计时调试自定义 Windows 窗体控件(MSDN)。