如何解决设计时“文件'devenv.exe'的格式无效”空白页面异常






4.43/5 (7投票s)
演示如何找到导致设计器崩溃的异常
引言
如果您经常使用System.Windows.Forms
进行继承,或使用第三方内容(如果您没有源代码,则首选这种情况),并且按下了Shift+F7(查看设计器),那么设计器唯一能显示的内容就是空白页面。通常您会感到困惑,不知道从哪里开始寻找这个VS.NET设计器中意想不到的功能。也许这可能是您今天添加的最后几行代码,或者可能是没人记得的代码,因为它是一个月前由外部工作人员编写的。现在该怎么办?您应该在几个小时内检查您的代码是否正在运行吗?
背景
我的工作是为我今天工作的公司编写 UI 前端库。有 5 位团队成员需要使用我的代码。每次设计器显示空白页面时,都会叫到我的名字,我必须(尝试)尽快修复它,如果您不知道从哪里开始寻找错误,这并不好。
解决方案配置
Visual Studio 支持不同的解决方案配置(sc),调试和发布是默认配置。由于我们可以添加/删除此 sc,因此我们可以添加一个新的 sc,它支持设计时调试。如果您能够调试设计时,那么您就能够找到导致设计器崩溃的异常,您还记得,空白页面。
- 右键单击您的解决方案,然后选择配置管理器...上下文菜单项。
- 在“配置管理器”中,选择<新建>。
- 为您的新解决方案配置指定一个名称。
- 点击两次确定,现在选择了创建的 sc。
- 右键单击您的项目,然后选择“属性”上下文菜单项
- 现在打开了众所周知的项目属性页面,选择配置属性\调试
- 将调试模式切换为程序。
- 让启动应用程序指向您的devenv.exe文件。 另请参阅
截图可在此处找到(以新窗口打开的动画 gif)。
异常
现在按 Ctrl + Alt + E,或在主菜单调试\异常下选择异常。因为我们不确切知道我们要查找哪种异常类型,所以我们最好为公共语言运行时异常选择中断到调试器。在处理空白页面问题后,我知道会抛出System.BadImageFormatException
。
解决它
好消息是您现在可以准备解决那些导致我们设计器崩溃的棘手异常了。坏消息是设计器无法正常工作,因为我们的代码中存在异常。我们做了一些在设计时无效但在那里执行的事情。或者存在另一种特定类型的异常,同样对设计时无效。
- 按 F5 启动调试,正如您所期望的,Visual Studio 启动了另一个 Visual Studio 实例,在那里您将
- 打开您刚刚为设计时调试准备的相同解决方案。
- 在设计模式下查看通常导致设计器崩溃的窗体。
- 在您当前的 Visual Studio 后面应该会出现众所周知的异常对话框,点击中断,您将看到抛出异常的代码。
- 重复这些步骤,直到您的代码没有异常(幻觉),但确保设计器正常工作。
演示应用程序为您提供了一个很好的示例,如果您尝试在设计器中加载 form2,它会崩溃。请确保到 devenv.exe的路径反映了您当前的安装,否则调试模式将无法正常工作。
结论
- 我希望有了这些知识,您可以解决您的设计时问题,对我自己而言,它确实有效。
历史
- 2003 年 5 月 27 日最终发布
祝您玩得开心...