当我尝试打开一个在不同项目中引用UserControl的表单时,我搜索了StackOverflow并发现了类似的问题。
我得到“为了防止在加载设计器之前可能丢失数据,必须解决以下错误:”与以下两个错误相关的消息:
和
InformationBox1是设计器中表单上的用户控件InformationBox的一个实例 - 它只是被引用为;
Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox
“MyNamespace.CommonUi”项目成功构建。
我在项目中得到智能感知,所以我有理由相信它被正确引用。
到目前为止,和其他人一样:
这是一个已经从VS2005中的.NET2 / x86迁移到VS2012中的.NET4 / x64的项目。
现在,当解决方案在64位下运行时,它不起作用,我得到了这个设计器错误。但是,如果我将它切换到32位(技术上称为AnyCPU),我可以很好地打开设计器。
我已经阅读了类似线程中的其他建议,但是他们没有看到提供任何解决方案(我甚至已经走了“将其左移和右移以重建”选项)< / p>
答案 0 :(得分:49)
我认为问题在于Visual Studio本身是32位,并且不能对64位的某些组件(例如ListView)进行GUI编辑。 例如。在具有ListView的表单上,您需要将解决方案更改为32位以编辑GUI。
所以答案就是,当你面对这个问题时:
有关详细信息,请参阅此问题。
VS 2010 designer error 'Could not find type XYZ' in Windows7. Works fine in XP
答案 1 :(得分:13)
我有这个问题。它只发生在一个表单设计器视图中,尽管它能够在运行时编译,启动,显示此表单并在设计器模式下显示其他表单/控件。
这些步骤没有帮助:
解决方案:
答案 2 :(得分:8)
将任何CPU更改为X86。您的控制是32位试图在64位机器上运行,但无法找到64位版本的控件。
答案 3 :(得分:4)
我最近在Visual Studio 2013中使用VB.Net时遇到了同样的错误,该自定义WinForm用户控件本身在同一项目中继承了自定义用户控件基类,并采取了一些措施来找出真正的原因是,在我的情况下,基类和子类都没有无参数构造函数(因为在这种情况下这不是一个有效的场景)。
为了解决这个问题,我添加了缺少的构造函数但将其保留为空(抛出NotImplementedException导致另一个阻止其显示的问题)。它不漂亮,但它有效。
为了通过此线程问题中列出的错误查看潜在错误,我必须执行以下操作:
添加构造函数后,我不得不再次执行上述步骤以使其正常工作。
答案 4 :(得分:3)
我更改了一个包含多个项目的大型解决方案,以便从AnyCPU定位x64平台。尝试打开其中一个解决方案表单的设计者,该表单引用了其他项目中的控件,并获得了与OP相同的错误消息。打开包含控件的项目,看到它仍然以AnyCPU为目标。尝试了一个小时让它保存为x64而没有运气。我最终在记事本中打开了csproj文件,用x64替换了AnyCPU,这一切都开始工作了。希望这能帮助别人像我一样感到沮丧。
答案 5 :(得分:2)
这里有一些进一步的信息: the-designer-could-not-be-shown-with-platform-x64
当你试图访问设计师时,在AnyCPU中运行的分辨率是一种解决方法,对于我们的目的就足够了。
答案 6 :(得分:2)
虽然有很多对32位等的引用,但对我有用的步骤是:
将所有对用户控件的引用转换为'InformationBox1 as InformationBox'成为一个完全限定的类引用,如 'MyNamespace.CommonUi.InformationBox',在所有designer.vb文件中。
清洁解决方案
重建解决方案。
就我而言,这是一个从VB6到VS2008的迁移项目,两个环境都是32位,并且在同一台机器上,没有涉及64位的迹象。
答案 7 :(得分:2)
只需保存您的项目,关闭它然后重新打开它。
答案 8 :(得分:1)
如果编译x64,则会发生这种情况,因为Visual Studio设计器无法加载x64程序集。 Visual Studio的设计者只能加载x86程序集,因为它只是一个32位进程!
答案 9 :(得分:1)
我认为您应该让您在64位项目的单独项目中控制UI,并使用任何CPU设置运行它。这将有助于不用64版本清理和重建它。
答案 10 :(得分:1)
您可以更改为任何CPU
Project =&gt; properties =&gt;建立
平台目标:更改为任何CPU
清理并重建,重新打开设计文件
答案 11 :(得分:1)
最近,我在VS 2015中使用一个自定义控件(C#)遇到了相同的问题。
我通过清洁溶液(“构建”->“清洁溶液”)解决了问题,然后重新构建了整个溶液。一切恢复顺利。
我的项目设置的平台目标已经设置为“任何CPU”,并且选中了“首选32位”复选框。不知道为什么会这样。
答案 12 :(得分:1)
我有同样的问题,我通过以下方法解决了它: