如何解决VS2010 Windows窗体设计器问题(无法加载基类)

Ant*_*ony 24 .net visual-studio-2010 windows-forms-designer winforms

我最近在使用继承的UserControls时在VS2010SP1的Windows窗体设计器中出现错误.

错误是

无法为此文件显示设计器,因为其中的所有类都无法设计.设计人员检查了文件中的以下类:DebugPanel ---无法加载基类"UI.Panels.PanelBase".确保已引用程序集并且已构建所有项目.

PanelBase是一个UserControl,它在与DebugPanel相同的类库中定义,它也实现了一个接口IPanel(在同一个类库中定义).IPanel实现了一个在不同类库中定义的接口IBaseItem.

所以我们有

DebugPanel            (Library UI.Shared2)
- PanelBase           (Library UI.Shared2)
    - UserControl     (System.Windows.Forms - .NET4)
    - IPanel          (Library UI.Shared2)
        - IBaseItem   (Library Net.Common) 
Run Code Online (Sandbox Code Playgroud)

PanelBase可以正确设计,项目都可以正确构建并且可以工作但是当我尝试设计任何继承的控件时,设计器会失败.这不仅限于DebugPanel控件,而是继承自PanelBase的任何控件......我也看到了我使用的具有类似继承层次结构的其他控件的问题.

我通常可以通过清理库UI.Shared2,关闭VS然后再次打开它,重建解决方案并打开设计器来临时解决问题.然后这将工作一段时间,然后再次开始失败.

有没有人有任何建议可以永久解决这个问题,而无需重新启动VS?

编辑:我的目标是所有库的完整版.NET 4.

小智 17

我遇到过同样的问题.我有一个继承自的Form对象/基础对象,突然间我看到所有从Base继承的Forms的消息.

我试图回溯并找出最近发生了什么变化,并记得我将我的项目平台目标从任何CPU设置为x64.我将其更改回任何CPU并解决了问题,然后再将其重新设置为x64仍然可以解决问题.

顺便说一句,这是在VS 2013上.


jmo*_*eno 7

我建议把你的基类放在一个单独的项目中.正如你明显知道的那样,问题是VS正在丢失一些元信息,你可以通过退出和重建来找到它.如果基类位于单独的项目中,则清理/重建更有可能使其更新.

  • 六年后,这仍然是一个错误.干得好,微软. (4认同)

Nol*_*nar 7

我最近经常遇到这个问题并找到了一个简单快速的解决方法,并决定分享它(适用于VS 2012).

如果你有这样的表格:

public partial class MyForm : MyBaseForm
Run Code Online (Sandbox Code Playgroud)

并且设计师没有设计MyBaseForm说法the base class 'System.object' cannot be designed,我所要做的就是删除: MyBaseForm和恢复(Backspace> Ctrl + Z).然后设计师会感觉到它的意义.

public partial class MyForm : MyBaseForm // The designer has trouble with this
public partial class MyForm              // Force an error
public partial class MyForm : MyBaseForm // Revert back, the designer should now work again
Run Code Online (Sandbox Code Playgroud)

现在剩下要做的就是等待微软解决那个烦人的bug.


son*_*mog 5

  1. 清洁项目(不确定这是否有必要)
  2. 将构建设置为发布
  3. 重建项目

如果您在调试模式下构建项目,表单设计器显然不会重建您手动编辑的表单。