294 votos

¿Qué significa el Visual Studio "Cualquier CPU" objetivo?

Tengo algo de confusión relacionados con la .NET la plataforma de opciones de generación en Visual Studio 2008.

¿Qué es el "CPU" compilación de destino, y qué tipo de archivos genera? Examiné el archivo ejecutable de salida de este "Any CPU" construir y encontraron que son (¿quién no ve que viene!) el x86 ejecutables. Así que, ¿hay alguna diferencia entre la orientación ejecutable para x86 vs "Any CPU"?

Otra cosa que he notado, es que el de C++ administrado proyectos no tienen esta plataforma como una opción. ¿Por qué es eso? ¿Eso significa que mi sospecha acerca de la "CPU" de archivos ejecutables de ser sencillo de 32 bits es el de la derecha?

230voto

AnthonyWJones Puntos 122520

Un conjunto de CPU será JIT al código de 64 bits cuando carga en proceso de 64 bits y 32 bits cuando se carga en un proceso de 32 bits.

Limitando la CPU estaría diciendo algo siendo utilizado por la Asamblea (algo probablemente no administrada) que requiere de 32 bits o 64 bits.

172voto

Paul A Jungwirth Puntos 3580

Creo que la mayoría de las cosas importantes que se ha dicho, pero pensé que sólo me gustaría añadir una cosa: si se compila como "Any CPU" y se ejecutan en una plataforma x64, entonces usted no será capaz de cargar la dll de 32 bits, debido a que su aplicación no se inicia en WOW64, pero esas dll necesario para ejecutar allí. Si se compila como x86, entonces el sistema x64 se ejecuta la aplicación en WOW64, y usted será capaz de cargar la dll de 32 bits. Así que yo creo que debe elegir "Any CPU" si sus dependencias se puede ejecutar en cualquier entorno, pero elegir x86 si tienes de 32 bits dependencias. Este artículo de Microsoft se explica esto un poco:

/CLRIMAGETYPE (Especificar el Tipo de CLR Imagen)

49voto

Dillie-O Puntos 16780

He aquí un rápido resumen que explica los distintos objetivos.

Desde mi propia experiencia, si usted está buscando para construir un proyecto que va a funcionar en ambas plataformas, x86 y x64, aplicaciones, y usted no tiene cualquier x64 optimizaciones, me gustaría cambiar la build que decir específicamente "x 86".

La razón de esto es que usted puede conseguir a veces algunos archivos Dll que chocan o algún código que vientos de hasta estrellarse WOW en x64 de medio ambiente. Específicamente, especificando x86, x64 OS va a tratar la aplicación como una pura x86 de la aplicación y asegurarse de que todo funciona sin problemas.

36voto

NYSystemsAnalyst Puntos 6197

Consulte el artículo de Visual Studio .NET Plataforma de Destino Explicó.

La configuración predeterminada, Cualquier CPU, significa que la asamblea va a ejecutar de forma nativa en la CPU está ejecutando actualmente. Lo que significa que se va a ejecutar como de 64 bits en un equipo de 64 bits y de 32 bits en un equipo de 32 bits. Si la la asamblea está llamada desde una aplicación de 64 bits, se ejecutará como un Ensamblado de 64 bits y así sucesivamente.

31voto

AngryHacker Puntos 18835

"Any CPU" significa que cuando se inicia el programa, el .NET Marco de la figura, basado en el sistema operativo bits, si se ejecuta el programa en 32 bits o 64 bits.

Hay una diferencia entre x86 y de la CPU: en un sistema x64, su ejecutable compilado para X86 se ejecutará como un ejecutable de 32 bits.

En cuanto a sus sospechas, sólo tienes que ir a la de Visual Studio 2008 de la línea de comandos y ejecute el siguiente.

dumpbin YourProgram.exe /headers

Le dirá el valor de bits de su programa, además de un montón más.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X