2012-06-14 7 views
7

Cuando creo una nueva aplicación WPF en Visual Studio 2012, la configuración de destino y compilación de la plataforma se establece en x86 de manera predeterminada. ¿Por qué es este el caso? Para una aplicación WPF simple (sin referencias a ensamblajes de modo mixto) ¿existe algún peligro al utilizar AnyCPU para que mi ejecutable WPF esté JIT en el código x64 en mi máquina x64 y en x86 en una máquina x86?¿Por qué la plataforma predeterminada es objetivo para una aplicación WPF en Visual Studio x86 y no en AnyCPU?

Respuesta

5

¿Por qué es este el caso?

Para la mayoría de las aplicaciones, construir como 32 bits es realmente mejor. 64 bits proporciona pocos beneficios y algunas desventajas significativas en la mayoría de los casos (uso de memoria mucho más alto, administración de dependencias más compleja con múltiples plataformas, peor experiencia de depuración, etc.).

Si, sin embargo, su aplicación necesita para poder usar grandes cantidades de memoria, entonces, por supuesto, 64bit tiene ventajas (y es fácil de conmutar en VS), pero la mayoría de las aplicaciones no se incluyen en este barco.

Es por esto que el nuevo valor predeterminado en VS 2012 es usar AnyCPUPrefer32Bit en lugar de AnyCPU para las aplicaciones.

0

Si elige especificar una CPU, entonces automáticamente limita su .exe a una plataforma u otra.

rara vez hay ninguna razón para hacer esto, a menos que sea absolutamente necesario dependencias de 32 bits:

En otras palabras, no hay " problema de rendimiento. El verdadero problema es la "compatibilidad". Si carga componentes de 32 bits y está en un platerm de 64 bits, debe invocar WOW64. CLRTIMAGETYPE le permite hacer eso.

+2

No estoy del todo seguro de cómo responde esto a la pregunta ... – BoltClock

+1

Cuando leí la pregunta, el problema es que VS selecciona la configuración específica de la plataforma de manera predeterminada. –

+2

Además, al elegir x86, no limita su .exe a x86. 64 bits Windows ejecutará ejecutables x86 bajo WOW64 sin problema. La elección de x64 no limita, pero el resto de las opciones no. –

2

Según este bug report, se realizó debido a problemas con Editar y Continuar en máquinas x64 con código x64. Al cambiarlo a x86, Editar y Continuar funciona correctamente.

No debe haber peligro al cambiarlo a AnyCPU. Yo siempre hago esto

Cuestiones relacionadas