.net 找不到类型';xxx.xxx.xxx';。请确保装配完成

.net 找不到类型';xxx.xxx.xxx';。请确保装配完成,.net,vb.net,visual-studio-2012,visual-studio-designer,.net,Vb.net,Visual Studio 2012,Visual Studio Designer,我搜索了StackOverflow,在尝试打开引用不同项目中的UserControl的表单时发现了类似的问题 我明白了 为防止加载设计器之前可能的数据丢失,必须解决以下错误: 与以下两个错误相关的消息: 找不到类型“MyNamespace.CommonUi.InformationBox”。请做 确保引用了包含此类型的程序集。如果这 类型是开发项目的一部分,请确保项目 已使用当前平台的设置成功构建 或任何CPU 及 变量“InformationBox1”未声明或从未声明过 分配的 Informat

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

我明白了

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

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

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

变量“InformationBox1”未声明或从未声明过 分配的

InformationBox 1
是设计器中表单上的用户控件
InformationBox
的一个实例-它只是作为一个引用

Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox
MyNamespace.CommonUi
项目成功构建

我在项目中获得了intellisense,因此我有理由相信它被正确引用

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

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

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


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

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

下面是一些进一步的信息:


当您试图访问设计器时,在任何CPU中运行的解决方案都是一种变通方法,对于我们来说就足够了。

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

这些步骤没有帮助:

  • 清理和重建
  • 重新启动工作室
  • 删除所有bin和obj目录
  • 删除和添加引用
  • 否认、愤怒、讨价还价、沮丧、接受
解决方案针对我的案例:

  • 重命名缺少的类型(例如InformationBox=>InformationBox2)
  • 刷新设计器(哇,它工作了!)
  • 将类型重命名为其初始名称

  • 我认为问题在于VisualStudio是64位的,不能对某些组件(例如ListView)进行GUI编辑。 例如,在具有ListView的表单上,需要将解决方案更改为32位以编辑GUI

    简而言之,当你面对这个问题时:

  • 将解决方案更改为32位或任意CPU
  • 清理并重建解决方案/项目
  • 打开GUI进行编辑
  • 保存,将解决方案更改回64位
  • 清理和重建
  • 以64位运行
  • 不幸的是,到目前为止,VisualStudio还没有将所有控件设计为32位模式(或AnyCPU模式)

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


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

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

      • 清洁溶液

      • 重建解决方案


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

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

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

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

  • 清洗整个溶液
  • 关闭Visual Studio
  • 重新打开Visual Studio
  • 重新打开解决方案
  • 通过在解决方案资源管理器中右键单击解决方案来构建该解决方案(不是重建,这不起作用)
  • 在设计器模式下查看用户控件,此时将显示实际错误

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

    如果为x64编译,则会发生这种情况,因为Visual Studio设计器无法加载x64程序集。Visual Studio的设计器只能加载x86程序集,因为它是一个仅32位的进程

  • 您可以更改为任意CPU
  • 为x86构建,然后VisualStudio设计器可以加载程序集,以便在设计时显示控件
  • 不要使用x64程序集进行设计,只能通过批处理或在Visual S中生成它们
    Project => properties => Build