VisualStudio“任何CPU”目标是什么意思?

VisualStudio“任何CPU”目标是什么意思?

我对VisualStudio 2008中的.NET平台构建选项有一些困惑。

什么是“任意CPU”编译目标,它会生成什么样的文件?我检查了这个“任意CPU”构建的输出可执行文件,发现它们是x86可执行文件(谁不会预见到!)。那么,将可执行文件定向到x86与“任意CPU”之间有什么区别吗?

我注意到的另一件事是,托管C+项目没有这个平台作为选项。那是为什么?这是否意味着我对“任何CPU”可执行文件都是普通的32位可执行文件的怀疑是正确的?


元芳怎么了
浏览 698回答 3
3回答

一只萌萌小番薯

阿任意CPU程序集将在加载到64位进程时将JIT转换为64位代码,在加载到32位进程时为32位代码。通过限制CPU,您会说:程序集使用的东西(可能是非托管的)需要32位或64位。

守着星空守着你

我想大部分重要的东西都说过了,但我只是想补充一件事:如果你编译成任何CPU在x64平台上运行,您将无法加载32位dll,因为您的应用程序不是在WOW 64中启动的,但是这些dll需要在那里运行。如果您编译为x86,那么x64系统将在WOW 64中运行您的应用程序,您将能够加载32位dll。因此,我认为如果您的依赖项可以在任何环境中运行,则应该选择“任意CPU”,但是如果您有32位依赖项,则应该选择x86。Microsoft的这篇文章对此作了一点解释:/CLRIMAGETYPE(指定CLR图像类型)顺便提一句,另一个Microsoft文档同意x86通常是一个更便携的选择:选择x86通常是应用程序包最安全的配置,因为它将在几乎所有设备上运行。在某些设备上,带有x86配置的应用程序包将无法运行,例如Xbox或一些物联网核心设备。然而,对于一台PC来说,x86包是最安全的选择,并且对设备部署的影响最大。很大一部分Windows 10设备继续运行x86版本的Windows。

哈士奇WWW

这是一个快速概述这就解释了不同的构建目标。根据我自己的经验,如果您希望构建一个同时在x86和x64平台上运行的项目,并且您没有任何特定的x64优化,我会将构建更改为“x86”。造成这种情况的原因是,有时您可以获得一些与之冲突的DLL,或者在x64环境中得到一些最终崩溃的代码。通过具体指定x86,x64操作系统将应用程序视为纯x86应用程序,并确保一切顺利运行。
打开App,查看更多内容
随时随地看视频慕课网APP