以下是我的问题: 我的Windows窗体项目中有自定义UserControl。我可以在设计师中设计它就好了。但是只要我想编辑包含控件Visual Studio 2010崩溃的表单。
据我所见,在加载表单时执行了构造函数和控件的Load-Event。
我尝试使用VS2010的另一个实例来调试设计器,但找不到执行execption的位置。
起初我的问题似乎是,对于Threading.Timer
对象,我用它来初始化我的对象(即从数据库加载值等等(在错误时再试一次以后的方法;)) ),回调函数由设计者执行,因此它试图访问在设计模式下它无法访问的对象。
Threading.Timer
对象的初始化在Load-Event中。但即使我在load事件中注释了所有内容(除了try catch块和Debugger.Break()
调用在第二个实例VS2010中有一个断点来调试设计器)Visual Studio一旦我想要编辑就会一直崩溃在设计模式中包含控件的表单。
我尝试了一些我在这里找不到问题的答案:User control always crashes Visual Studio
因此,即使设计人员在解析Load-Event或Constructor时无所事事。它仍然崩溃。
有人知道如何防止Visual Studio在表单设计器中崩溃并正确显示用户控件吗?
包含usercontrol的项目还引用了一些自定义库和库项目。我不知道问题是否可能与此有关。
答案 0 :(得分:3)
解决了我自己的问题...
通过尝试调试设计师模式,我欺骗了自己。
在尝试在设计器模式下打开包含用户控件的表单时,在Load-Event中设置 Debugger.Break()是一个非常糟糕的主意,因为如果您没有调试Visual Studio使用另一个Visual Studio实例,然后 Debugger.Break()将停止应用程序,从而崩溃Visual Studio实例。
最后,通过使用用户控件的DesignerMode属性,我能够阻止设计器执行我的线程初始化.Timer对象可以通过这种方式解决问题。
答案 1 :(得分:1)
我有同样的问题(VS 2005),明确的答案对我也没有用。我终于能够通过删除" obj"来解决问题。和" bin"我的解决方案中的文件夹,然后在发布模式下重建项目。我希望这可以帮助任何有这个问题的人。
答案 2 :(得分:0)
在我的问题中,每次打开它时整个解决方案都会崩溃,因为每次打开解决方案时设计模式都会打开guilty文件,从而导致整个解决方案崩溃,这可能是由用户控件引起的但我不能无法访问要解决的解决方案。
所以我找到了另一种让我回到编码的方法..它不涉及深入调试系统事件,我认为它可以帮助所有级别的用户,因此发布。
我在解决方案之外打开了aspx文件,字面上只是前端代码文件,可以在记事本或包括VS在内的任何文本编辑器中完成。 注释掉所有代码(java代码无关紧要,因为没有任何东西在调用它) 保存文件并关闭。 重新打开解决方案。 即使设计师视图打开了,这次也没有崩溃,因为没有什么可以处理的。 然后,我逐段取消注释代码,各种代码量,20行,100行...每次返回设计器视图以检查它是否会崩溃。 当我完成(没有崩溃!)我能够从我离开的地方继续。 希望它有所帮助!