【发布时间】:2011-12-07 14:37:32
【问题描述】:
我最近在使用继承的 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)
PanelBase 可以正确设计,项目全部正确构建并且可以正常工作,但是当我尝试设计任何继承的控件时,设计器会失败。这不仅限于 DebugPanel 控件,还包括从 PanelBase 继承的任何控件...我还看到了我使用的具有类似继承层次结构的其他控件的问题。
我一般可以通过清理库UI.Shared2,关闭VS再打开,重建解决方案,打开设计器来临时解决问题。 然后这将工作一段时间,然后再次开始失败。
有没有人有任何建议可以永久解决此问题而无需重新启动 VS?
编辑:我的目标是包含所有库的完整版 .NET 4。
【问题讨论】:
-
尝试以完整版 .NET 而不是客户端配置文件为目标。
-
道歉 - 我忘了补充说我的目标是 .NET4 的完整版本。最初我只针对客户资料,但我想我会试一试完整版!
-
我在 VS2010 中打开几个表单时遇到了类似的问题,但我把它归结为我们在基类中从 .net 1.1 开始使用的一些 3rd 方组件。我的情况非常糟糕,每次我尝试在设计器中打开它时都会显示红色错误消息,甚至拒绝保存手写代码。我们的管理层决定不续订该第 3 方的许可证(.net 4 版本)。所以我最终将这些控件包装在 .net 4.0 包装器中,然后在基本组件中使用这些控件,现在一切正常:)。不知道你有没有同样的情况。
-
@SSamra,这是一个有趣的建议 - 我不会想到(因为它肯定应该向后兼容!)但可能是问题的根源,因为我们确实使用以 .NET 2 为目标的第 3 方库(来自内存)。我试试看,谢谢。
标签: .net winforms visual-studio-2010 windows-forms-designer