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

The*_*ebo 34 c# windows-services visual-studio-2010

我们有以下共享组件:

public class OurServiceBase : System.ServiceProcess.ServiceBase
Run Code Online (Sandbox Code Playgroud)

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

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

public class MyService : System.ServiceProcess.ServiceBase
Run Code Online (Sandbox Code Playgroud)

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

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

public class MyService : OurSharedLibrary.OurServiceBase
Run Code Online (Sandbox Code Playgroud)

设计师停止工作:

错误截图

完整错误是:无法为此文件显示设计器,因为其中的所有类都无法设计.设计者检查了文件中的以下类: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) 
Run Code Online (Sandbox Code Playgroud)

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

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

use*_*795 66

您也可以尝试这样做:

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

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

  • 或者,关闭并重新启动Visual Studio本身(而不仅仅是关闭并重新打开项目)可能会解决您的问题.在这里的其他任何建议都失败之后,这就是我最终解决问题的原因. (4认同)
  • @Tim:现在是 2022 年了,这种情况在 vs2022 中仍然发生 (3认同)
  • 关闭所有UI窗口工作 (2认同)
  • 关闭清洁和建筑在这里也起作用。 (2认同)
  • 关闭所有设计器窗口,然后关闭Visual Studio对我而言有效。关于设计师的一些事情会挂在VS上,直到您发布我猜想的所有内容后,他们才能被弄清楚。 (2认同)
  • 是的,重置东西在这里也有帮助!我使用VS2017,我的表单包含一些我自己的图形组件,我已经很长时间没有编译了。上面的答案对我来说太“轻量”了。我关闭了 Visual Studio,删除了解决方案的 .vs 目录,然后重新打开了 Visual Studio 并重新加载了解决方案。然后我清理并重建解决方案,双击表单设计..瞧 (2认同)
  • 该问题在 VS 2019 中仍然出现,该解决方案仍然解决了该问题。 (2认同)

Aus*_*nez 17

这是另一种可能的解决方案:

在 build 下的项目属性下,我的平台目标设置为 x64。我将其更新为“任何 CPU”,重建了我的项目,设计人员打开得很好。

这更好地解释了它: x64 中的 Visual Studio 设计器不起作用

  • OMG,这也解决了我的问题。起初,我不相信答案,但是当实施您的建议时,它起作用了。微软需要尽快解决这个问题。 (2认同)

saj*_*oon 12

  1. 打开“Designer.cs”文件
  2. 剪切所有代码并保存文件
  3. 粘贴所有代码并保存文件

其他步骤包括:

  • 关闭并重新打开受影响的文件。
  • 清理并重建项目/解决方案
  • 删除“.VS”文件夹
  • 删除临时文件夹中的内容
  • 重新启动 Visual Studio

这就能解决问题

  • 这对我有用。这应该被标记为答案,比任何其他答案都简单。 (2认同)

Cod*_*ked 6

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

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


小智 5

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

这可能是因为项目路径包含一些外来字符,例如C#

例如,我的路径如下所示:

C:\projects\C#\项目名称...

当它更名为

C:\projects\CSharp\项目名称...

Visual Studio 现在能够识别父类,然后使用继承的窗体打开窗体。


Jer*_*son 5

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

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

正在构建的项目“MSIL”的处理器架构与参考“C:....dll”、“x86”的处理器架构之间存在不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器体系结构,以便使项目和参考之间的处理器体系结构保持一致,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的参考。


Kir*_*eed 5

对我来说,使用 VS2022 版本 17.1.1 修复方法是右键单击 MDI 选项卡并选择关闭所有选项卡