【问题标题】:VS 2010 designer error 'Could not find type XYZ' in Windows7. Works fine in XPVS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 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 您应该将您的解决方案发布为答案并将其标记为已回答,以防其他人偶然发现此问题。

标签: c# .net visual-studio-2010 windows-7


【解决方案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】:
          1. 清洁溶液
          2. 构建包含控件的项目
          3. 将控件添加到工具箱/表单中

          看看这是否有效。

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

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

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

              调试 => 发布

              然后

              发布 => 调试

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

              【讨论】:

                猜你喜欢
                • 2011-01-01
                • 1970-01-01
                • 2011-12-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-05
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多