Visual Studio 2005 - 无法在设计器上打开表单

时间:2008-10-02 10:14:07

标签: visual-studio-2005 windows-forms-designer

我的团队在Visual Studio 2005上开发了一个GUI应用程序,托管C ++。由于某些交付,即使源代码和项目设置未更改,也无法在设计器中打开表单。设计师报告此错误:

抛出了'System.OutOfMemoryException'类型的异常。

at Microsoft.VisualStudio.Design.VSDynamicTypeService.ShadowCopyAssembly(String fileName) 在Microsoft.VisualStudio.Design.VSDynamicTypeService.CreateDynamicAssembly(String codeBase) 在Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly() 在Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName,String typeName,Boolean ignoreTypeCase,Assembly& assembly,String description) ...

我们成功重新编译了该项目,但仍遇到此问题。 有什么想法吗?

4 个答案:

答案 0 :(得分:1)

这就是我用来调试这些问题的方法,启动Visual Studio的第二个实例,加载项目并附加到第一个也加载了项目的实例。现在在构造函数和Page Load事件中设置一个断点,也可以在第二个实例中的表单中设置任何自定义绘制事件,并尝试在第一个实例中打开设计器,断点应该被击中,你应该能够看看发生了什么。

答案 1 :(得分:1)

我怀疑你有一个设计模式错误,在相关表格上发生无限循环(或递归控制创建)。

在Windows Forms上帮助我解决这些错误的一点是:

  • 为您的GUI应用程序打开Visual Studio 2005解决方案。不要打开你的表格
  • 打开另一个Visual Studio 2005实例
  • 在第二个实例中,将第一个devenv.exe实例附加(Debug - > Attach to Process)到调试器。确保异常(Debug - > Exceptions)在“Thrown”下选中所有异常复选框。
  • 现在转到第一个VS2005实例并打开表单。第二个VS2005实例将在发生错误的行停止。

答案 2 :(得分:0)

这是一个很长的镜头,但尝试连续几次关闭并打开设计师。我遇到了与C#Windows窗体设计器(VS2005)相同的问题:表单通常最终正确打开(经过5次尝试后,非常一致)。

答案 3 :(得分:0)

在使用大型多项目解决方案或具有极大且复杂的窗口形式的项目时,我间歇性地遇到了同样的问题。

我能够通过启用Visual Studio使用超过2GB的内存来解决问题。这是过程...

(注意:这假设XP和Visual Studio 2005 - Vista和/或VS2008需要稍作修改)

编辑Boot.ini

右键单击我的电脑属性高级选项卡。在启动和恢复下,单击设置。单击编辑按钮,然后将 / 3GB 开关添加到[operating systems]行的末尾:

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /3GB

使Visual Studio“大地址识别”

运行Visual Studio命令提示符,然后切换到IDE目录:

cd %ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE

使用微软工具editbin修改devenv.exe:

editbin /LARGEADDRESSAWARE devenv.exe

现在重启,你就完成了!