17

我收到以下错误

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

但是没有任何意义的是它My.Special.UserControl与表单在同一个程序集中。My.Special.UserControl更重要的是,如果我查看 Designer.cs 文件中的代码,似乎有一些参考。该程序集构建良好,并且运行良好。只有设计师有问题。

因此,我们必须通过手动调整 Designer.cs 文件来完成所有设计工作。我怎样才能让设计师再次工作?

4

12 回答 12

10

以下程序对我有用:

  1. 删除源代码目录中的 /bin 和 /obj 文件夹。
  2. 重新启动 VS(确保有问题的表单设计器已关闭)
  3. 编译
  4. 再次在 Designer 中打开表单。问题应该得到解决。

我确定不需要同时删除 /bin 和 /obj,但我无法重现错误并找到更具体的解决方案。(我的项目通常足够小,重新编译整个项目没什么大不了的。)

通常,此错误似乎发生在重构/重命名违规类的对象之后。所以我的猜测是,在重构用户控件或自定义控件后,有一个 VS 错误不会重新编译适当的目标文件。

于 2015-03-25T03:50:36.187 回答
9

将项目类型临时更改为x86,编译并打开Designer。Visual Studio 是一个 32 位应用程序。

于 2020-03-30T15:34:28.673 回答
3

您的表单/用户控件的加载或初始化部分可能发生了异常。您可以尝试注释掉那里的任何代码并重新尝试在设计器中打开吗?

您可以使用 Visual Studio 的另一个实例将调试器附加到您的 Visual Studio 实例,而不是让您打开窗体。一旦发生异常,您将能够查明出现问题的位置。

于 2013-04-05T13:39:11.050 回答
2

我遇到了完全相同的问题。我相当确定它已连接到平台目标 x64。这是一篇相关文章,将其作为 Visual Studio 中的错误提及:

https://stackoverflow.com/a/11582828/7665665

我如何处理:虽然我的解决方案实际上只有 x64,但我为项目创建了另一个平台目标 x86,只是为了能够使用设计器。现在我将目标切换到 x86,以便在 VS Designer 中查看我的控件。对于其他一切,我切换回 x64。

于 2021-04-20T16:28:32.610 回答
2

从 VS 2017 社区版转到专业版时,我遇到了类似的问题。

  1. 关闭 VS
  2. 转到项目文件夹
  3. 删除 .vs 文件夹。如果需要,请备份。
  4. 开始 VS

这应该可以解决问题

于 2019-08-13T07:15:00.857 回答
1

我对从我的 form.cs 中的标准 .NET 控件派生的用户控件有同样的问题。以上没有对我有用(我的解决方案编译为 x64,因为其他非托管组件仅支持 x64)。

我最终创建了一个单独的项目“Utils”并将有问题的派生控件移至该项目。这就像一个魅力!

于 2016-06-16T10:06:10.727 回答
1

将项目目标切换到 x86 是我唯一可能的解决方案

于 2019-01-31T08:56:31.983 回答
1

就我而言,我只是卸载项目并再次重新加载

于 2017-09-25T02:17:00.847 回答
0

今天发生在我身上。清理、重建、重新启动 Vs 甚至重新启动都没有帮助。一切都按预期运行,唯一不起作用的是 VS 中的设计器。

在我的情况下,由于没有任何工作,我去了设计器文件,删除了有问题的控件,然后添加了一个新控件。重命名,重新分配事件侦听器并且它起作用了。

Designer 现在可以工作了,但如果这一定是某种 VS 错误,我不知道。


这不是我来 SO 时想阅读的答案,但我会发布它以防以后对任何人有帮助。

于 2013-10-01T17:40:33.327 回答
0

对我来说,我删除了表单的 .resx 文件,它构建并显示在设计器中,没问题。去搞清楚....

于 2015-04-13T17:27:29.773 回答
0

在我的项目中,只有当我在解决方案的单独项目中创建自定义用户控件时它才有效:

  1. 添加新项目“类库(.NET Framework)”
  2. 添加对 System.Windows.Forms & System.Drawing 的引用
  3. 在新项目中添加新用户控件的源
  4. 构建解决方案
  5. 打开设计器
  6. 在窗体中拖动新的用户控件

在我的例子中,当我在表单中拖动自定义用户控件时,设计器会自动添加对新项目的引用。

希望这可以帮助其他偶然发现这个问题的人。

于 2020-02-25T09:30:30.300 回答
0

当我对 DataGridView 进行子分类时,我也有类似的经历。以下程序对我有用:

  1. 关闭表单设计器选项卡
  2. 关闭 VS (2015)
  3. 删除项目的 /bin 和 /obj 文件夹
  4. 重启VS
  5. 重建解决方案

我不知道可以跳过哪些步骤,因为我没有花时间完善流程。

于 2019-12-19T09:07:21.203 回答