【问题标题】:Visual Studio 2005 - can not open form on designerVisual Studio 2005 - 无法在设计器上打开表单
【发布时间】:2008-10-02 10:14:07
【问题描述】:

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

引发了“System.OutOfMemoryException”类型的异常。

在 Microsoft.VisualStudio.Design.VSDynamicTypeService.ShadowCopyAssembly(字符串文件名) 在 Microsoft.VisualStudio.Design.VSDynamicTypeService.CreateDynamicAssembly(字符串代码库) 在 Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly() 在 Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(字符串全名、字符串类型名、布尔忽略类型案例、程序集和程序集、字符串描述) ...

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

【问题讨论】:

  • 我很想知道,@Mac 的解决方案是否适合您?
  • 这个问题在 Visual Studio 2008 中会消失吗?这种情况在那里处理得更好吗? Linesh
  • 很遗憾,我不知道,因为 Visual Studio 2005 是我们从未尝试过使用较新编辑器的客户要求。

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


【解决方案1】:

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

【讨论】:

  • 我尝试了你的方法,我意识到异常在 mscorlib.dll 模块中并且在我的文件加载之前发生(因此我的代码中的断点永远不会到达......)..无法还没找到解决办法!
【解决方案2】:

我怀疑您遇到了设计模式错误,其中在相关表单上发生了无限循环(或递归控件创建)。

在 Windows 窗体上帮助我解决此类错误的一件事是:

  • 为您的 GUI 应用程序打开 Visual Studio 2005 解决方案。暂时不要打开您的表单
  • 打开另一个 Visual Studio 2005 实例
  • 在第二个实例中,将 devenv.exe 的第一个实例附加(调试 -> 附加到进程)到调试器。确保异常(调试 -> 异常)选中“抛出”下的所有异常复选框。
  • 现在转到您的第一个 VS2005 实例并打开表单。第二个 VS2005 实例会停在出错的那一行。

【讨论】:

    【解决方案3】:

    这是一个长镜头,但请尝试连续多次关闭和打开设计器。我在使用 C# Windows 窗体设计器 (VS2005) 时也遇到过同样的问题:窗体通常最终会正确打开(尝试 5 次后,非常一致)。

    【讨论】:

      【解决方案4】:

      在处理大型多项目解决方案或具有非常大且复杂的窗口窗体的项目时,我会间歇性地遇到同样的问题。

      我能够通过启用 Visual Studio 使用超过 2GB 的内存来解决这个问题。流程如下……

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

      编辑 Boot.ini

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

      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
      

      使用microsoft工具editbin修改devenv.exe:

      editbin /LARGEADDRESSAWARE devenv.exe
      

      现在重启,你就完成了!

      【讨论】:

      • 嗯不知道为什么这被否决了。我坚持我的回答! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多