【发布时间】: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