54

当我尝试打开引用不同项目中的 UserControl 的表单时,我搜索了 StackOverflow 并发现了类似的问题。

我明白了

为了防止在加载设计器之前可能丢失数据,必须解决以下错误:

与以下两个错误有关的消息:

找不到类型“MyNamespace.CommonUi.InformationBox”。请确保引用了包含此类型的程序集。如果此类型是您的开发项目的一部分,请确保已使用当前平台或任何 CPU 的设置成功构建项目。

变量“InformationBox1”要么未声明,要么从未赋值。

InformationBox1是设计器中窗体上的用户控件的一个实例InformationBox- 它只是被引用为;

Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox

项目MyNamespace.CommonUi成功构建。

我在项目中获得了智能感知,因此我有理由相信它被正确引用。

到目前为止,和其他人一样:

这是一个从 VS2005 中的 .NET2/x86 迁移到 VS2012 中的 .NET4/x64 的项目。

现在,当解决方案在 64 位下运行时,它不起作用,我得到了这个设计器错误。但是,如果我将它切换到 32 位(从技术上讲是 AnyCPU),我可以很好地打开设计器。

我已经阅读了类似线程中的其他建议,但他们没有看到提供任何解决方案(我什至已经走到了“左右移动以使其重建”选项)

4

16 回答 16

74

我认为问题在于 Visual Studio本身是 32 位的,无法对 64 位的某些组件(例如 ListView)进行 GUI 编辑。例如,在您拥有 ListView 的表单上,您需要将解决方案更改为 32 位以编辑 GUI。

所以简而言之,当你遇到这个问题时:

  1. 将解决方案更改为 32bit 或 AnyCPU
  2. 清理并重建解决方案/项目
  3. 打开 GUI 进行编辑
  4. 保存,将解决方案改回64位
  5. 清理和重建
  6. 64位运行

不幸的是,Visual Studio还没有 64 位,因此所有控件都需要在 32 位模式(或 AnyCPU 模式)下设计。

有关更多详细信息,请参阅此问题。

VS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 XP 中运行良好

于 2014-10-24T01:09:28.010 回答
17

我有这个问题。它只发生在一个表单设计器视图中,尽管它能够在运行时编译、启动、显示此表单并在设计器模式下显示其他表单/控件。

这些步骤没有帮助:

  • 清理和重建
  • 重启工作室
  • 删除所有 bin 和 obj 目录
  • 删除和添加引用
  • 否认、愤怒、讨价还价、抑郁、接受

我的情况的解决方案

  1. 重命名缺少的类型(例如 InformationBox => InformationBox2)
  2. 刷新设计师(哇,它有效!)
  3. 将类型重命名为其初始名称
于 2014-01-10T20:35:43.090 回答
10

将任何 CPU 更改为 X86。您的控件是 32 位的,试图在 64 位机器上运行,但找不到 64 位版本的控件。

于 2013-09-25T22:46:35.323 回答
4

我最近在 Visual Studio 2013 中使用 VB.Net 使用自定义 WinForm 用户控件时遇到了同样的错误,该控件本身继承了同一项目中的自定义用户控件基类,并采取了一些措施来找出真正的原因是什么,在我的情况下,基类和子类都没有无参数构造函数(因为在这种情况下这不是有效的场景)。
为了修复它,我添加了缺少的构造函数,但将其留空(抛出 NotImplementedException 会导致另一个问题,导致它无法显示)。它不漂亮,但它有效。

为了通过此线程问题中列出的错误查看潜在错误,我必须执行以下操作:

  1. 清洁整个溶液
  2. 关闭 Visual Studio
  3. 重新打开 Visual Studio
  4. 重新打开解决方案
  5. 通过在解决方案资源管理器中右键单击它来构建解决方案(不是重建,这不起作用)
  6. 在设计器模式下查看用户控件,现在显示实际错误

添加构造函数后,我不得不再次执行上述步骤以使其正常工作。

于 2016-10-03T12:32:55.607 回答
3

我将一个包含多个项目的大型解决方案更改为从 AnyCPU 面向 x64 平台。尝试打开其中一个解决方案表单的设计器,该解决方案表单引用了其他项目之一中的控件并得到与 OP 相同的错误消息。打开包含控件的项目,发现它仍然以 AnyCPU 为目标。尝试了一个小时才能将其保存为 x64,但没有成功。我最终在记事本中打开了 csproj 文件,用 x64 替换了 AnyCPU,一切都开始工作了。希望这可以帮助像我一样沮丧的其他人。

于 2016-08-10T02:07:04.133 回答
3

最近,我在 VS 2015 中的一个自定义控件(C#)遇到了同样的问题。

我通过清理解决方案(Build -> Clean Solution)解决了它,然后重建整个解决方案。一切都顺利回来了。

我的项目设置的平台目标已设置为“任何 CPU”,并勾选了“首选 32 位”复选框。不知道为什么会这样。

于 2018-09-27T09:37:47.760 回答
2

那么这里有一些进一步的信息: the-designer-could-not-be-shown-with-platform-x64

当您尝试访问设计器时,在 AnyCPU 中运行的解决方案是一种解决方法,对于我们的目的来说就足够了。

于 2013-09-26T12:15:35.303 回答
2

虽然有很多关于 32 位等的参考,但对我有用的步骤是:

  • 在所有 Designer.vb 文件中,将所有对用户控件的引用(例如“InformationBox1 as InformationBox”)转换为完全限定的类引用,例如“MyNamespace.CommonUi.InformationBox”。

    • 清洁解决方案

    • 重建解决方案。

就我而言,这是一个从 VB6 到 VS2008 的迁移项目,两个环境都是 32 位的,在同一台机器上,没有涉及 64 位的迹象。

于 2015-11-16T16:19:47.023 回答
2

只需保存您的项目,关闭它,然后重新打开它。

于 2017-02-09T05:48:40.537 回答
1

我认为您应该将 UI 控制在与 64 位项目不同的项目中,并在设置任何 CPU 的情况下运行它。这将有助于不使用 64 版本清理和重建它。

于 2017-03-03T07:34:45.710 回答
1

我有同样的问题,我通过以下方式解决了它:

  1. 在 Visual Studio 中转到解决方案的属性。
  2. 将“平台”更改为“AnyCPU”。
  3. 重建您的解决方案。
  4. 重新启动视觉工作室。
于 2020-02-23T14:38:20.060 回答
1

如果您针对 x64 进行编译,则会发生这种情况,因为 Visual Studio 设计器无法加载 x64 程序集。Visual Studio 的设计者只能加载 x86 程序集,因为它是一个仅限 3​​2 位的进程!

  1. 您可以更改为 AnyCPU
  2. 为 x86 构建,然后 Visual Studio 设计器能够加载您的程序集以在设计时显示您的控件
  3. 不要使用 x64 程序集进行设计,仅通过批处理或在 Visual Studio 中构建它们,然后切换回 AnyCPU 或 x86
于 2017-01-08T12:13:12.790 回答
1

您可以更改为任何 CPU:

Project => properties => Build

平台目标:更改为Any CPU

清理并重建,重新打开设计文件。

于 2017-03-22T13:55:07.860 回答
0

在我拥有的某个解决方案(即.sln)中,有些东西似乎让设计师感到困惑。我正在使用visualstudio-17.0.4。我收到以下错误:

找不到类型“System.Windows.Forms.UserControl”。请确保引用了包含此类型的程序集。如果此类型是您的开发项目的一部分,请确保已使用当前平台或任何 CPU 的设置成功构建项目。

请注意,有问题的类型是System.Windows.Forms.UserControl框架提供的类型,而不是我的开发项目中的类型。我正在引用System.Windows.Forms和定位 .net-4.6 和 AnyCPU。该项目构建良好,没有任何错误,甚至 IntelliSense 也知道该类型。设计器可能会尝试以不同于 IntelliSense 的方式加载依赖项。但它没有给我足够的信息来弄清楚它失败的原因。

所有正常的分辨率都不适合我。但是,我注意到 Designer 有时会加载。经过进一步的实验,我发现如果我尝试在打开解决方案时最初卸载的项目中打开 Designer,它会加载。请注意,仅卸载和重新加载项目是不够的。如果您遇到与我相同的问题,请严格按照这些步骤操作。

  1. 在 Visual Studio 中打开您的解决方案。
  2. 右键单击包含 winforms Designer 文件的项目并选择卸载项目 (L)。
  3. 退出 Visual Studio。
  4. 在 Visual Studio 中打开您的解决方案。
  5. 右键单击已卸载的项目并选择重新加载项目 (L)。
  6. 加载后右键单击项目并选择构建(U)。
  7. 双击(输入)该项目中的 winforms Designer 文件并等待它报告加载失败。它应该报告以下错误:

    无法为此文件显示设计器,因为无法设计其中的任何类。设计人员检查了文件中的以下类: UserControl1 --- 无法设计基类“System.Void”。零件 --- 基类“系统”。无法加载。确保已引用程序集并且已构建所有项目。

  8. 关闭设计器。
  9. 再次双击(输入)winforms Designer 文件。Designer 应该会成功加载。

如果您需要在多个项目中编辑 winforms Designer 文件,您可能需要卸载然后加载/构建多个项目而不是单个项目。

此解决方案是临时的。如果在没有先卸载项目容器 winforms Designer 文件的情况下关闭 Visual Studio,您将无法再打开这些 winforms Designer 文件,直到您再次执行该过程。

如果不使用 100% DPI,则可能需要将步骤 3 和 4 替换为以 100% DPI 模式重新启动 Visual Studio。请注意,这些步骤仅在您尚未打开任何 winforms Designer 文件时才有效(100% 提示仅针对您打开的第一个 winforms Designer 文件显示):

  1. 在另一个项目中,双击一个 winforms Designer 文件。它可能无法加载,但如果这是您在此 Visual Studio 会话中打开的第一个 winforms Designer 文件,您应该会收到提示:

    主显示屏上的缩放比例设置为 175%。以 100% 缩放重新启动 Visual Studio帮我决定

  2. 选择“以 100% 缩放比例重新启动 Visual Studio”选项。

于 2021-12-30T20:04:28.743 回答
0

这里没有什么对我有用。然后,我刚刚卸载了包含有问题的设计页面的项目。重新加载它,清理解决方案并重建解决方案。设计师像魔术一样回来了。

于 2021-12-30T14:54:09.727 回答
0

我知道这是一个非常古老的问题/问题。不过,我想有些人应该知道最新的 VS 2022(预览版)现在是原生 64 位的,并且可以在构建 64 位应用程序时以 x64 设计器模式处理自定义对象。

于 2021-09-08T20:55:16.837 回答