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