无法加载工具箱项.它将从工具箱中移除

本文关键字:工具箱 加载 | 更新日期: 2023-09-27 18:32:59

我有一个WinForm应用程序。我也为它创建了自己的User Control。一切都很好。直到今天,当我尝试将其添加回我的程序中时,我收到了错误消息(我从未删除过它。Visual Studio做到了(。

无法加载工具箱项 #UserControlName。它将从中删除 工具箱。

我在我的解决方案资源管理器中有它,但在此错误后它从我的工具箱中消失了。我还收到警告,上面写着:

"#UserControlName"永远不会被分配给,并且将始终具有其 默认值为空。

当我查看我的设计器代码时,这是真的。但是我没有对我的设计器代码做任何事情。我的用户控件在那里定义,但未实例化。我怎样才能把它放回去?

这与我将构建平台从x32更改为x64有什么关系吗?如果是这种情况,我会感到惊讶,因为该程序在该更改后运行良好。

无法加载工具箱项.它将从工具箱中移除

我的一个应用程序遇到了同样的问题,找不到解决方案。因此,我手动创建了用户和自定义控件。再次搜索网络后,我终于找到了为什么设计师在这个特定的项目中失败了。答案是项目是64位的,Visual Studio仍然没有64位的版本,它仍然是32位。因此,设计器无法在 64 位应用程序或类库中加载控件。阅读Microsoft关于此的文章。Visual Studio网站上有一篇文章,但它被删除了。在Visual Studio支持论坛中查看答案。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/77e10b58-43cc-4aab-919f-888f14f99571/x64-class-library-of-user-controls?forum=csharpgeneral

我最近遇到了同样的问题。由于这个(以及本网站和互联网上的任何其他答案(实际上帮助了我,我找到了修复它的方法。
只需清理文件并重新生成解决方案即可。就这么简单。

我遇到了同样的问题,但我找到了解决方案:
用鼠标左键单击"Project_Name",然后单击"构建",然后您可以将用户控件添加到WinForm

更改为 AnyCPU 并重建项目。Visual Studio在64位控件方面存在问题。

您不必手动插入用户控件。我也有同样的情况,这是有原因的。
就我而言,它失败了,因为 EXE 程序集使用 CLR 支持类型 /clr 编译为"混合模式"。 通过设置类型 /clr:pure 将其更改为"仅托管"后,它起作用了。
有关详细信息,请参阅我在SO上的回答。

右键单击 - 重建解决方案 为我修复了它!

经过数小时的头疼,使用大型自定义控件与源代码管理中的先前工作副本几乎没有更改,我将所有代码复制到新的控件名称和文件中,一切都起作用了。

这是为了识别代码的问题行,因为调试器不会合作。 复制的控件(以及大量支持代码和模块(工作正常。

所以这些是修复我原始代码的非常简单的步骤

  1. 解决方案资源管理器中重命名文件(我只是在末尾添加了一个s(
  2. 重建
  3. 测试控件现在可以添加到普通窗体
  4. 将控件重命名回其原始名称

步骤 4 对你来说可能是可选的,但如果你有源代码管理并且它是库中的,你会想要这样做。

这使控件返回到我所有不起作用的表单上(据我所知(。 似乎问题出在VS中,不知何故记得它不喜欢它?

希望这有所帮助,我希望下次当我忘记修复:)时收到此消息时,我能找到此消息

附言 清理、重建和/或重新运行解决方案是此问题的旧备用方法,但这次它只是整个 (DLL( 类中的一个自定义控件。 希望这有帮助。

对我来说

,添加userControl后,我首先重建应用程序,然后通过转到项目来刷新工具箱上的项 => 刷新项目工具箱项

主要由 32 位/64 位架构引起。在 Visual Studio 2022 之前,VS 内置于 32 位,因此无法显示 64 位组件。

解决方案 1:

  • 在 配置管理器 中创建名称为:"Debug_FormDesign"或其他任何名称的新解决方案配置。
  • 将所有项目的配置设置为上述名称,并将平台设置为"AnyCPU"。
  • 现在逐步打开所有项目的编译设置,选择上述配置并将编译 -> 目标 CPU 选项更改为 AnyCPU。
  • 关闭所有打开的窗口。
  • 干净的解决方案。
  • 重新启动 VS。
  • 选择工具栏中的"Debug_FormDesign"配置为活动状态。
  • 重新生成解决方案。
  • 打开表单设计器 -> 现在应该可以工作了。

完成GUI后,您可以轻松地切换回默认的"调试"配置。

解决方案 2:

  • 使用 Visual Studio 2022。

在这样的时候,您将被迫修改设计器代码。只要你不对设计器代码进行重大更改,你就不应该破坏任何东西。为了安全起见,请重新实例化实例化其他控件的对象(靠近页面顶部(。设计师应填写属性等的空白。

这也应将控件返回到工具箱。

检查您的 form.designer 文件是否存在具有该类型的遗留属性。它发生在我身上几次。在我删除了该行并重建项目后,一切开始工作。

就我而言,手动将创建的用户控件的头文件包含在要使用这些控件的窗体顶部很有帮助。

我在SDK项目文件中收到此错误。看来我忘了将OutputType添加到项目中。如果没有将OutputType设置为 WinExe ,我能够使用设计器和构建/运行等,但是当我尝试将控件添加到同一项目中的窗体时,出现了此错误。

以下行应位于 SDK 项目文件中:

    <OutputType>WinExe</OutputType>