对于任何VS项目,可以在该项目的构建属性中设置平台目标。您可以将其设置为任何CPU,x86,x64或Itanium。我的问题是,如果我将此值设置为x86,那是否意味着我无法在x64机器上运行该项目?如果是这样,为什么这甚至被使用?总是使用Any CPU不是更好吗?
答案 0 :(得分:40)
如果我将此值设置为x86,是否意味着我无法在x64计算机上运行该项目?
不,32位应用程序(x86)在64位Windows(x64)上运行正常。所有64位版本的Windows都包含一个32位兼容层,在Windows 64(WOW64)上称为Windows。事实上,这通常是 你想要的,因为大多数应用程序都不会因为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位主机上运行良好。 This blog post有助于阐明为什么决定保持VS 32位的原因。您可能会发现推理有助于您自己做出决定。
同样,虽然Microsoft Office现在可以在64位软件包中使用,但Microsoft仍然建议大多数客户坚持使用32位版本。 64位版本存在兼容性问题,并没有太大的好处。
答案 1 :(得分:1)
如果您未指定32位平台,则Microsoft应用程序兼容性工具包无法确定该应用程序是否为32位,并且不允许您创建32位解决方案文件以允许应用程序在用户帐户控制时无需管理员凭据即可运行打开了