3

假设我们有一个针对Any CPU的应用程序,但该应用程序使用了具有 32 位和 64 位两种风格的第三方程序集。必须使用它们上的哪一个?

如果“任何”选项在 32 位和 64 位中运行应用程序,我怎样才能给它两个版本的程序集?

我的具体需要是一个 .NET SQLite驱动程序。

4

2 回答 2

2

真的很简单:

  • 如果您将应用程序定位为“任何 CPU”,在所有条件相同的情况下,该应用程序可以在 32 位或 64 位系统上运行。

  • 如果您的“任何 CPU”应用程序依赖于 32 位或 64 位 dll,如果它试图在缺少依赖项的系统上运行,它将失败。

  • 如果您想“到处运行”,那么您最好的选择可能是针对 32 位(而不是“任何 CPU”)。除非您对 64 位有特殊要求,否则您真的不需要 64 位。

  • 如果您在 64 位环境中运行您的应用程序时遇到“BadImageExceptions”,您可能希望考虑“自定义操作”:

    http://adamhouldsworth.blogspot.com/2010/10/64bit-custom-actions.html

于 2012-12-27T05:37:21.997 回答
0

因为您最有可能静态引用程序集,所以您将需要两个版本的应用程序 - 一个编译为 x86,一个编译为 x64。

我不是特别了解 Sqllite 驱动程序,但通常使用 x86 版本的驱动程序就足够了,它仍然可以通过 WOW32 仿真机制在 x64 系统上运行。这意味着您可以只编译一个版本 (x86) 以安装到 x86 和 x64 系统上(正如 Mark Hall 在上一个问题中提到的那样)。如果您要使用 x64 特定功能(如更大的数据类型、更多可用的 RAM 等),您只需要针对 x64 进行编译。

于 2012-12-27T05:35:22.373 回答