VS 2010设计器错误’无法在Windows7中找到类型XYZ’。 在XP中运行良好

我在VS 2010 C#.NET中遇到了问题。 我在Windows XP上有一个项目,包括表单,类和一些我自己的自定义组件。 这些组件是内置MS组件的简单扩展(例如DataGridViewEx作为DataGridView的扩展)。 一切都在XP中运行良好。 我正试图在Windows 7 / x64上将此项目移植到VS 2010。 我已经有了在Windows 7上编译OK的解决方案,但是在设计模式下,当我打开包含一个自定义控件的表单时,我收到错误’找不到类型XYZ.DataGridViewEx。 请确保引用包含此类型的程序集。 XYZ是我用于这些控件的命名空间,它与使用控件的表单具有相同的命名空间。 所有这些都是同一个VS项目的一部分。

当我在同一项目中打开一个不包含这些自定义控件之一的表单时,该表单在设计器中打开OK,我在工具箱的左侧看到自定义控件。 但是,如果我尝试将其中一个控件拖到该表单中,它会弹出一个错误消息框’无法加载工具箱项’DataGridViewEx’。 它将从工具箱中删除。 然后它会从工具箱中删除。

在XP中的VS解决方案中,一切都运行良好。 此问题仅发生在Windows 7 / x64中的VS解决方案中。

我不明白为什么它抱怨无法找到该组件,因为该组件是同一项目的一部分。 这是一件有效的事情,不是吗?

我搜索了网络/论坛,发现了“找不到类型”错误的情况,但它似乎是由一个不同的问题引起的,我还没有找到摆脱错误的方法。

任何帮助/提示非常感谢!

如果您的项目针对64位,则需要构建32位并在进行GUI编辑时选择32位解决方案。 这是因为studio是32位,因此无法加载64位控件。

我之前遇到过这种情况,请确保在您的Form.Designer.cs代码文件中,每次调用自定义控件都是为了绝对调用。 例如:

Namespace.CustomControl control; 

而不是

 CustomControl control; 

查看您的参考文献并找到任何带有感叹号图标的文章。 删除错误的引用并将它们添加回项目。

您是否尝试完全禁用UAC(以管理员身份运行IDE +禁用UAC以防万一)。 此外 – 始终使用Fusion Log跟踪assembly负载! 有关如何设置的信息,请参见http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx

您是否从头开始重建组件?

这些项目包括在内吗?

它们都在建造吗?

它们都构建在同一平台上(x86 vs x64)吗?

将默认值设置为x86并应该修复它。

  1. 清洁解决方案
  2. 构建包含Control的项目
  3. 将控件添加到工具箱/表单

看看这是否有效。

对于有类似问题的任何人。 我刚刚在x86 PC上的VS 2013(VB端)中遇到过这个问题。 如上所述,我从’anyCPU’切换到’x86’并且表单设计器正在打开。 很简单,但如果没有上述post,可能不会尝试。 为了它的价值,我切换回’anyCPU’,并且还没有复发……

我遇到了同样的错误,无法构建我的应用程序。

所以在这里搜索,说要改变解决方案平台X64或X32。 但就我而言,解决方案平台仅显示任何CPU和配置管理器选项

但我只是改变解决方案配置。

Debug => Release

然后

Release => Debug

最后清理并重建解决方案。 它对我有用!! 🙂