c# - studio - Cualquier CPU-Prefiero 32 bits
visual studio express 2010 (2)
Basado únicamente en la cotización que especificó, sugiere que significa lo siguiente:
Si la CPU admite el procesamiento de 32 bits, el código final de la máquina será de 32 bits (ARM o x86, no importa).
Si no, el código de la máquina será de 64 bits.
En los días de antaño, AnyCPU significaba "Soy agnóstico de plataforma". Por lo general, esto significaba que obtendría 64 bits en plataformas de 64 bits y, de lo contrario, 32 bits.
Sin embargo, hay razones por las que puede desear 32 bits incluso en una CPU de 64 bits: los punteros son la mitad del tamaño, por lo que usa menos memoria; el código es más pequeño, por lo que cabe más en el caché, etc. Sin embargo, no había forma de obligar al CLR a usar 32 bits, y aún así retener 64 bits en los casos que fuera necesario.
Ahora, con AnyCPU (se prefiere 32 bits), puedes tener tu pastel (soporte de 64 bits cuando sea necesario) y comerlo también (soporte de 32 bits cuando sea posible)
Nota: Si no me equivoco, Itanium sería una plataforma que solo admite código de 64 bits, no de 32 bits. Puede o no puede haber otros.
Descargo de responsabilidad: no soy un experto, esto es solo de varias publicaciones de blog que he leído en los últimos 6 meses aproximadamente.
¿Qué hace la opción Cualquier CPU - Preferir 32 bits?
Aunque soy consciente de que WinRT no puede manejar exe y solo puede ejecutar aplicaciones de la Tienda Windows, existen varias preguntas en StackOverflow que hacen la misma pregunta y ambas hacen referencia a este blog que dice:
En .NET 4.5 y Visual Studio 11 el queso ha sido movido. El valor predeterminado para la mayoría de los proyectos .NET es nuevamente AnyCPU, pero ahora hay más de un significado para AnyCPU. Existe un subtipo adicional de AnyCPU, "Cualquier CPU de 32 bits preferida", que es el nuevo valor predeterminado (en general, ahora hay cinco opciones para el conmutador del compilador C # de la plataforma: x86, Itanium, x64, anycpu y anycpu32bitpreferred ). Cuando se utiliza ese sabor de AnyCPU, la semántica es la siguiente:
- Si el proceso se ejecuta en un sistema Windows de 32 bits, se ejecuta como un proceso de 32 bits. IL se compila al código de máquina x86.
- Si el proceso se ejecuta en un sistema Windows de 64 bits, se ejecuta como un proceso de 32 bits. IL se compila al código de máquina x86.
- Si el proceso se ejecuta en un sistema ARM de Windows, se ejecuta como un proceso de 32 bits. IL se compila a código de máquina ARM.
Sin embargo, después de comprar mi Surface RT, creé un programa Hello World, lo configuré en Cualquier CPU, verifiqué el indicador Preferir 32 bits, lo compilé y lo copié en mi Surface. Cuando ejecuté el programa, el sistema operativo me dijo que no podía ejecutar el programa y que debería mirar al mercado como lo haría para cualquier exe x86 / x64. El mensaje exacto que se mostró fue: "Esta aplicación no se puede ejecutar en su PC. Para encontrar aplicaciones para esta PC, abra la Tienda Windows".
Entonces, ¿qué hace esto realmente y es posible compilar una aplicación de Cualquier CPU para Windows RT en ARM?