在最新的visual studio 中,我们在project的property界面中,在设置build的platform target的时候,默认为any cpu, 在改选项之后还有子选项,perfer x86.那么platform target这个选项的实际意义是什么呢?
如果platform target是x86,那么程序可以在x86和x64上运行,但是在实际运行时,是按照32bit程序运行,IL(托管代码的中间语言)会被编译成32bit机器码的。
如果platform target是x64,那么程序可以在x64上运行, 在实际运行时,是按照64bit程序运行,IL会被编译成64bit机器码的。
如果platform target是any cpu,如果选中子选项prefer 32 bit,那么实际运行按照32bit运行,IL会被编译成32bit机器码,如果没有选中选项prefer 32 bit,那么在32bit操作系统上,按照32bit程序运行,IL被编译成32bit机器码,在64bit操作系统上是按照64bit程序运行,IL被编译成64bit机器码。
那么 any cpu,然后选中 prefer 32 bit 与直接在platform target 选中x86的区别是什么呢?
如果选的是x86那么该程序不能在ARM 平台上运行,如果是any cpu, prefer 32 bit,则是可以运行的。
注:在.net framework 4.5 之前是没有prefer 32 bit 这个子项的。