30

对于任何 VS 项目,都可以在该项目的构建属性中设置平台目标。您可以将其设置为任何 CPU、x86、x64 或 Itanium。我的问题是,如果我将此值设置为 x86,这是否意味着我无法在 x64 机器上运行该项目?如果是这样,为什么还要使用它?总是使用任何 CPU 不是更好吗?

4

2 回答 2

49

如果我将此值设置为 x86 是否意味着我无法在 x64 机器上运行该项目?

不,32 位应用程序 (x86) 在 64 位 Windows (x64) 上运行良好。所有 64 位版本的 Windows 都包含一个名为 Windows on Windows 64 (WOW64) 的 32 位兼容层。事实上,这通常是您想要的,因为大多数应用程序不会从 64 位编译中受益。

但是,为 64 位 (x64) 编译确实意味着您的应用程序不会在 32 位 (x86) 机器上运行。你可以往回走(64 位可以运行 32 位),但你不能往前走 32 位不能运行 64 位)。

Any CPU正如您所指出的,编译始终是一种选择。这将允许应用程序在 32 位机器上作为 32 位应用程序 (x86) 运行,并在 64 位机器上作为 64 位应用程序 (x64) 运行。这听起来像是灵丹妙药,但也是有代价的。最值得注意的是,您需要在 32 位和 64 位环境中广泛测试您的应用程序而如果您只针对 32 位环境(包括 64 位主机上的 32 位环境),您只需测试一个版本。而且额外的工作负载很少值得——大多数业务应用程序无法从 64 位环境的额外内存空间中受益,并且最终可能会因 64 位指针开销的增加而抵消任何潜在收益。

Visual Studio 本身就是完全 32 位应用程序的一个很好的例子。没有 64 位版本,但它在 64 位主机上运行良好。这篇博文有助于阐明为什么决定保留 VS 32 位。您可能会发现推理有助于您自己做出决定。

同样,尽管 Microsoft Office 现在提供 64 位软件包,但 Microsoft 仍然建议大多数客户坚持使用 32 位版本。64 位版本存在兼容性问题,而且没有太多好处。

于 2012-05-10T14:05:28.920 回答
1

如果您未指定 32 位平台,则 Microsoft 应用程序兼容性工具包无法确定应用程序是 32 位的,并且不允许您创建 32 位解决方案文件以允许应用程序在打开用户帐户控制时无需管理员凭据即可运行

于 2017-05-31T21:07:49.253 回答