2012-05-10 10 views
22

Para cualquier proyecto de VS, es posible establecer el objetivo de la plataforma en las propiedades de compilación de ese proyecto. Puede establecer esto en Cualquier CPU, x86, x64 o Itanium. Mi pregunta es, si establezco este valor en x86 ¿significa eso que no puedo ejecutar ese proyecto en una máquina x64? Si es así, ¿por qué se usa esto? ¿No es mejor simplemente usar siempre cualquier CPU?¿Cuál es el propósito de establecer el objetivo de la plataforma para una aplicación de Visual Studio?

Respuesta

30

si establezco este valor en x86 ¿significa eso que no puedo ejecutar ese proyecto en una máquina x64?

No, las aplicaciones de 32 bits (x86) funcionan muy bien en Windows de 64 bits (x64). Todas las versiones de 64 bits de Windows incluyen una capa de compatibilidad de 32 bits llamada Windows en Windows 64 (WOW64). Esto es generalmente lo que quiere, de hecho, ya que la mayoría de las aplicaciones no se benefician de ser cumplidas para 64 bits.

Sin embargo, compilar para 64-bit (x64) significa significa que su aplicación no se ejecutará en una máquina de 32 bits (x86). Puede ir hacia atrás (64 bits puede ejecutar 32 bits), pero no puede ir hacia adelante (32 bits no puede ejecutar 64 bits).

La compilación para Any CPU es siempre una opción, como usted señala. Eso permitirá que la aplicación se ejecute como una aplicación de 32 bits (x86) en una máquina de 32 bits y como una aplicación de 64 bits (x64) en una máquina de 64 bits. Esto suena como una panacea, pero hay costos. En particular, tendrá que probar su aplicación ampliamente en ambos entornos de 32 bits y de 64 bits, mientras que si solo se dirige a entornos de 32 bits (incluidos los entornos de 32 bits en un host de 64 bits), solo tiene que probar una compilación. Y la carga de trabajo adicional rara vez vale la pena: la mayoría de las aplicaciones comerciales no se benefician del espacio de memoria adicional de un entorno de 64 bits, y probablemente terminen derrotando cualquier ganancia potencial por el aumento de la sobrecarga de los punteros de 64 bits.

Visual Studio en sí es un buen ejemplo de una aplicación que es completamente de 32 bits. No hay una versión de 64 bits, pero funciona bien en un host de 64 bits. This blog post ayuda a arrojar algo de luz sobre por qué se ha tomado la decisión de mantener VS de 32 bits. Puede encontrar el razonamiento útil para tomar la decisión usted mismo.

Del mismo modo, aunque Microsoft Office ahora está disponible en un paquete de 64 bits, Microsoft sigue recomendando que la mayoría de los clientes se queden con la versión de 32 bits. Hay problemas de compatibilidad con la versión de 64 bits, y simplemente no hay mucho beneficio.

+2

"la mayoría de las aplicaciones no se benefician del cumplimiento de 64 bits". Esto es una mentira. La capa WOW64 tiene una sobrecarga inherente asociada, el montón se distribuye de manera más eficiente y el mecanismo de protección ASLR tiene más bits de entropía para proteger su aplicación en 64 bits. – SecurityMatt

+6

No dije que no había beneficios. Dije que las desventajas esencialmente "eliminan" las ventajas, al menos en este punto. Esta va a ser una de esas cosas que probablemente cambie en unos pocos años, y no recordaré volver y actualizar mi respuesta. –

+0

Chicos, sus comentarios han sido muy perspicaces. De esto se trata StackOverflow. Gracias. –

1

Si no especifica la plataforma de 32 bits, el kit de herramientas de compatibilidad de aplicaciones no puede determinar que la aplicación es de 32 bits y no le permitirá crear un archivo de solución de 32 bits para permitir que una aplicación se ejecute sin requerir credenciales de administrador. está activado

Cuestiones relacionadas