无法为此文件显示设计器,因为其中的任何类都无法设计

我们有以下共享组件:

public class OurServiceBase : System.ServiceProcess.ServiceBase 

此类具有我们在所有下游服务中所需的function,例如标准化执行调度和日志记录function。

在一个新项目中,我添加以下内容:

 public class MyService : System.ServiceProcess.ServiceBase 

在Windows Designer中,该类正确显示。

当我将服务更改为从OurServiceBase派生时

 public class MyService : OurSharedLibrary.OurServiceBase 

设计师停止工作:

错误截图

完整错误是:无法为此文件显示设计器,因为其中的任何类都无法设计。 设计者检查了文件中的以下类:EmailProcessor —无法加载基类“OurSharedLibrary.CienaServiceBase”。 确保已引用程序集并且已构建所有项目。

引用正确的程序集,项目构建。 我不明白为什么设计师正在翻阅这个,因为我的服务最终来自一个可设计的类。

任何建议都会受到欢迎。

更多信息 – 设计者在呈现无法设计派生服务的错误时调用堆栈:

 at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager) at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager) at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager) at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host) 

7/19/2011 2:34 PM EDT新发现。

类“OurServiceBase”存在于一个单独的项目中(通常仅作为DLL引用)。 一时兴起,我将基类文件复制到我的项目中,构建并打开设计器。 有效! 当我再次删除基类文件并返回到外部DLL引用时,设计器再次崩溃。

您最好的选择是从没有function的OurServiceBase版本开始,看看您是否可以设计MyService 。 如果是这样,那么慢慢添加function,直到它中断。

因为看起来Visual Studio在序列化OurServiceBase一个成员时遇到了问题。

您也可以尝试这样做:

  • 关闭所有UI设计页面
  • 清洁解决方案
  • 构建解决方案
  • 打开所需的UI设计页面

这可能会或可能没有帮助,但它确实在我的项目中解决了同样的问题。

以防万一像我这样的人必须在Visual Studio 2008上的旧项目上工作并面临同样的问题。

这可能是因为项目路径包含一些异国情调的字符,如C#

例如,我的路径看起来像这样:

C:\项目\ C#\项目名称…

当它重命名为

C:\项目\ CSHARP \项目名称…

Visual Studio现在能够识别父类,然后使用inheritance的表单打开表单。

如果您的控件/服务inheritance自generics类,您可能也会遇到此问题。 设计器与层次结构中的抽象类不相容,因为它必须实例化它们。

我有一个有2个项目的解决方案(一个引用另一个),我刚刚设置了一个目标.Net 4.5.2,另一个目标是4.5。

提示: 查看错误列表中的警告消息:

正在构建的项目的处理器体系结构“MSIL”与参考“C:…. dll”,“x86”的处理器体系结构之间存在不匹配。 这种不匹配可能会导致运行时故障。 请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构依赖于引用。