【问题标题】:How can I put a 64-bit user control into Visual Studio 2012's toolbox?如何将 64 位用户控件放入 Visual Studio 2012 的工具箱?
【发布时间】:2015-01-16 20:37:26
【问题描述】:

我的 Visual Studio 2012 项目最终可能会占用大量内存,因此我在其解决方案中为 64 位处理器构建了所有项目。至少有一个项目(不幸的是我不记得是哪个)留在“任何 CPU”上。我决定将表单的内容转换为用户控件。它构建成功,我能够将生成的 DLL 添加到工具箱中,然后将新控件拖到窗体上。

但是,我收到了关于处理器选择之间不匹配的丑陋警告。为了清理它们,我将所有项目更改为针对 64 位处理器。突然,我无法在我的表单上使用我的 64 位控件。研究显示,一篇文章称 Visual Studio 是一个 32 位进程,因此它无法在工具箱中托管 64 位控件,但仍然可以动态使用这些控件。但是我发现的知识库文章可以追溯到 VS 2008 的日子。

在 VS 2012 中仍然如此吗?如何将我的 64 位控件放入工具箱,以便将其拖放到表单上?

非常感谢。

【问题讨论】:

  • 你不能。以 x64 为目标从来没有任何意义。选择完全取决于运行代码的用户操作系统,您无法从 Visual Studio 控制它。 AnyCPU 是合适的选择,当用户的 Windows 版本为 64 位时,您将自动以 64 位模式运行。
  • 感谢您的回复。不幸的是,就我而言,这并不完全正确。几乎我们所有的客户都使用 PostgreSQL 数据库提供程序,但因为并非所有客户都这样做,所以我们在程序中使用 ODBC。 PostgreSQL ODBC 驱动程序不喜欢“任何 CPU”。如果您尝试为一个处理器构建并为另一个处理器使用 ODBC 驱动程序,它们将引发处理器不匹配错误,并且如果您选择“任何 CPU”,无论您选择哪种 ODBC 驱动程序,都会出现该错误。
  • 这不是错误,只是警告。如果您不想看到警告,请不要使用 64 位 reference 程序集,32 位程序集就可以了。重要的是您部署的实际程序集。

标签: c# visual-studio visual-studio-2012 controls


【解决方案1】:

解决方案: 将类库添加到您的解决方案 - 使用 Any CPU 标志进行编译。 将您的用户控件移动到此库。 在您的 x64 项目中添加对该库的引用。 构建解决方案,然后在您的 x64 设计器中使用 UserControl。

【讨论】:

  • 据我了解,如果您在 32 位 V. Studio 中创建自定义控件并希望将它们拖到表单上,那么控件将是 32 位的,不是吗?因此,您不是无意中强制应用程序在 64 位计算机上运行在 32 位仿真模式下吗?我还没有找到解决方法。
【解决方案2】:

我在使用 64 位 Oracle.DataAccess 编写应用程序时遇到了这个问题。然后解决方案必须变成 64 位,导致 64 位控件无法从工具箱拖动到窗体上的常见问题。我最终制作了使用 AnyCPU 构建 Designer 的所有组件,但应用程序的其余部分为 x64。完美运行。

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 2014-12-08
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2012-06-19
    • 2011-04-28
    相关资源
    最近更新 更多