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
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.
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
- 1. ¿Cuál es el propósito de la API objetivo y minSDK
- 2. ¿Cuál es el propósito de la ventana Pila de llamadas en Visual Studio?
- 3. ¿Por qué la plataforma predeterminada es objetivo para una aplicación WPF en Visual Studio x86 y no en AnyCPU?
- 4. ¿Qué significa el objetivo "Cualquier CPU" de Visual Studio?
- 5. ¿Cuál es el propósito del proceso de alojamiento de Visual Studio?
- 6. ¿Cuál es el propósito de la tilde en esta situación?
- 7. ¿Cuál es el propósito de IntentSender?
- 8. ¿Cuál es el propósito de 'var'?
- 9. ¿Cuál es el propósito de Anorm's Pk?
- 10. ¿Cuál es el propósito de Ext.require
- 11. ¿Cuál es el objetivo de establecer el tamaño mínimo de almacenamiento dinámico en una aplicación de Android?
- 12. ¿Cuál es el propósito de config.assets.precompile?
- 13. ¿Cuál es el propósito de la palabra clave SQL "AS"?
- 14. ¿Cuál es el propósito de requestWindowFeature()?
- 15. ¿Cuál es el propósito de Rake?
- 16. ¿Cuál es el propósito de las clases parciales?
- 17. ¿Cuál es el punto del plugin viEmu para Visual Studio?
- 18. ¿Cuál es el propósito de layout.xml?
- 19. ¿Cuál es el propósito de Mage_Core_Block_Template_Facade
- 20. ¿Cuál es el propósito de Active Records?
- 21. ¿Cuál es el propósito de utilizar NSOrderedSame?
- 22. ¿Cuál es el propósito de Membership.ValidateUser()
- 23. WPF: ¿Cuál es el propósito de App.xaml?
- 24. ¿Cuál es el propósito de precompiledApp.config?
- 25. ¿cuál es el propósito de Thread.holdsLock (lock)?
- 26. ¿Cuál es el propósito de la interfaz de marcador?
- 27. ¿Cuál es el propósito de 'Class.forName ("MY_JDBC_DRIVER")'?
- 28. ¿cuál es el propósito de glClear (GL_DEPTH_BUFFER_BIT)
- 29. ¿Cuál es el propósito de java.math.MutableBigInteger?
- 30. ¿Cuál es el propósito de `qt_noop`
"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
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. –
Chicos, sus comentarios han sido muy perspicaces. De esto se trata StackOverflow. Gracias. –