对于任何VS项目,都可以在该项目的构建属性中设置平台目标。您可以将其设置为任何CPU,x86,x64或Itanium。我的问题是,如果我将这个值设置为x86,这是否意味着我无法在x64机器上运行该项目?如果是这样,为什么这甚至被使用?只是总是使用任何CPU不是更好吗?为Visual Studio应用程序设置平台目标的目的是什么?
回答
如果我将此值设置为x86是否意味着我无法在x64机器上运行该项目?
不,32位应用程序(x86)在64位Windows(x64)上运行良好。所有64位版本的Windows都包含一个称为Windows(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位主机上运行良好。 This blog post有助于阐明为什么决定保持VS 32位。你可能会发现推理有助于你自己做出决定。同样,尽管微软Office现在可以使用64位软件包,但微软仍然建议的大多数客户坚持使用32位版本。 64位版本存在兼容性问题,并没有太大的好处。
如果您没有指定32位平台,则Microsoft应用程序兼容性工具包无法确定该应用程序为32位,并且不允许您创建32位解决方案文件,以允许应用程序在用户帐户控制时无需管理员凭据即可运行已启用
- 1. 为Visual Studio 2015安装程序项目选择目标平台
- 2. 为我的Visual Studio C++项目配置目标平台
- 3. 为什么Visual Studio x86中的WPF应用程序的默认平台目标不是AnyCPU?
- 4. Visual Studio Community - 禁用目标平台“iOS”
- 5. 什么是Visual Studio的Web部署“标记为目标上的IIS应用程序”是什么意思?
- 6. Windows应用程序平台和目标平台的区别
- 7. 为什么我的项目属性目标设备不同意目标平台?
- 8. 设置为多平台应用程序
- 9. 发布配置文件中的Visual Studio数据库项目目标平台
- 10. AppDomain.CurrentDomain.BaseDirectory根据应用程序的目标平台而改变
- 11. Visual Studio:如何为包含32位和64位平台的项目设置Qt?
- 12. 在android应用程序中设置最小堆大小的目标是什么?
- 13. 什么是在Visual Studio 2008中的ASP.NET Web应用程序项目中设置本地化的最佳实践
- 14. Visual Studio - .EXE控制台应用程序的设置版本号
- 15. Visual Studio 2015将目标平台更改为Windows 7
- 16. 使用Visual Studio的Windows 7中的跨平台应用程序
- 17. 如何更改Visual Studio 2010上的目标平台
- 18. 更改Visual Studio 2008 Express的目标平台
- 19. 明确设置目标平台时未构建的新项目
- 20. Visual Studio 2008中的多个Web应用程序部署目标?
- 21. visual studio/installshield设置项目
- 22. visual-studio项目设置
- 23. Visual Studio设置项目
- 24. Visual Studio的流星帮助程序代码:什么是流星项目目录
- 25. 如何在Visual Studio 2010中将项目输出平台设置为x86
- 26. Visual Studio 2012应用程序设置
- 27. Visual Studio - 应用程序设置
- 28. 重置Visual Studio C++项目的设置
- 29. 按平台/配置更改Visual Studio 2008项目配置
- 30. 在VS 2015中推荐什么,Windows XP是目标平台
“大多数应用程序不受益于64位编译”。这是个谎言。 WOW64层具有与之相关的内在开销,更有效地布置堆并且ASLR保护机制具有更多的熵位以保护您的应用程序在64位上。 – SecurityMatt
我没有说没有好处。我说过,至少在这一点上,缺点基本上“冲淡”了优势。这将是几年内可能会发生变化的事情之一,我不会记得回头更新我的答案。 –
你们的评论非常有见地。这就是StackOverflow的全部内容。谢谢。 –