19

我在 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 解决方案中。

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

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

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

4

9 回答 9

23

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

于 2013-06-12T14:24:00.803 回答
1

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

于 2012-11-19T18:00:21.747 回答
1

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

Namespace.CustomControl control;

而不是

CustomControl control;
于 2012-10-14T00:17:13.760 回答
0

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

于 2012-11-12T21:21:42.590 回答
0

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

项目是否包括在内?

他们都在建吗?

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

于 2013-01-28T19:30:39.667 回答
0
  1. 清洁溶液
  2. 构建包含控件的项目
  3. 将控件添加到工具箱/表单

看看这是否有效。

于 2013-03-03T09:33:50.470 回答
0

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

于 2013-02-07T21:45:28.243 回答
0

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

于 2014-03-08T00:16:09.687 回答
0

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

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

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

调试 => 发布

然后

发布 => 调试

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

于 2017-07-18T11:59:32.380 回答