VS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 XP 中运行良好

Posted

技术标签:

【中文标题】VS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 XP 中运行良好【英文标题】:VS 2010 designer error 'Could not find type XYZ' in Windows7. Works fine in XP 【发布时间】:2012-10-04 09:31:10 【问题描述】:

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

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

在 XP 的 VS 解决方案中一切正常。这个问题只出现在Windows 7 / x64的VS解决方案中。

我不明白为什么它抱怨找不到组件,因为该组件是同一个项目的一部分。这样做是有道理的,不是吗?

我搜索了网络/论坛并找到了“找不到类型”错误的案例,但这似乎是由不同的问题引起的,我还没有找到摆脱错误的方法.

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

【问题讨论】:

我通过在解决方案中创建一个新的类库,并将所有组件从原始项目移动到新的类库,并将设计器引用更改为指向新的类库来让它工作命名空间。这很痛苦,但它有效。 我发现创建一个新类本质上是将问题复制到新命名的类中...... @jble 您应该将您的解决方案发布为答案并将其标记为已回答,以防其他人偶然发现此问题。 【参考方案1】:

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

【讨论】:

我不敢相信 VS2010 甚至没有警告这可能会导致麻烦!这正是我的罪魁祸首。谢谢! 经过长时间的调试,这让我大吃一惊。这个问题在 VS2013 中仍然存在。可能永远不会被修复。 微软的开发非常草率。 让我们为这个网站带来一些 YouTube 感觉:“2020 年谁在这里?”【参考方案2】:

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

Namespace.CustomControl control;

而不是

CustomControl control;

【讨论】:

谢谢 - 是的,我已经检查过了。这些调用是作为绝对调用完成的(完全符合命名空间)。 Windows 7 中仍然存在问题。 只是在这里检查一下,您是否更改了项目设置中的架构设置?这可能与您当前的问题有关或无关,但是由于您要从 x86 到 x86_64,这将是一个明智之举,除非您希望它向后兼容 x86。老实说,我不记得我在以前的项目中是如何解决这个问题的。 这个问题有结论了吗?【参考方案3】:

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

【讨论】:

【参考方案4】:

您是否尝试过完全禁用 UAC(以管理员身份运行 IDE + 禁用 UAC 以防万一)。 此外 - 始终使用 Fusion Log 来跟踪装配负载!设置方法见http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.71).aspx

【讨论】:

【参考方案5】:

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

项目是否包括在内?

他们都在建造吗?

它们是否都构建在同一个平台上(x86 与 x64)?

【讨论】:

【参考方案6】:

将默认构建设置为 x86,这应该可以修复它。

【讨论】:

【参考方案7】:
    清洁溶液 构建包含控件的项目 将控件添加到工具箱/表单中

看看这是否有效。

【讨论】:

【参考方案8】:

对于有类似问题的任何人。我刚刚在 x86 PC 上的 VS 2013(VB 端)中遇到了这个问题。如上所述,我从“anyCPU”切换到“x86”,然后表单设计器就打开了。很简单,但如果没有上述帖子,可能不会尝试过。对于它的价值,我切换回“anyCPU”,但至今没有复发......

【讨论】:

【参考方案9】:

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

所以搜到这里,说要换解决平台X64或者X32。 但在我的情况下,解决方案平台仅显示任何 CPU 和配置管理器选项

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

调试 => 发布

然后

发布 => 调试

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

【讨论】:

以上是关于VS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 XP 中运行良好的主要内容,如果未能解决你的问题,请参考以下文章

vs2013的属性管理器在哪?

vs2010中配置管理器win32和x64的区别

如何防止VS WPF设计器在工具箱中的每个对象上放置边距

VS2010打开项目提示未能正确加载解决方案中一个或多个项目,请问怎么回事? 要交课程设计,突然出现此问题

远程调试脚本代码VS2010

vs2022一直显示正在加载设计器