En .NET 4.5 y Visual Studio 11 el queso se ha 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. Hay un subtipo adicional de AnyCPU, "Cualquier CPU de 32 bits preferido", que es el nuevo valor predeterminado (en general, ahora hay cinco opciones para el conmutador del compilador / plataforma C #: x86, Itanium, x64, anycpu y anycpu32bitpreferred ) Cuando se utiliza el sabor "Preferir 32 bits" 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 en 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 en 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 al código de máquina ARM.
La diferencia, entonces, entre "Cualquier CPU de 32 bits preferida" y "x86" es solo esto: una aplicación .NET compilada a x86 no se ejecutará en un sistema ARM Windows, pero una aplicación de "Cualquier CPU de 32 bits preferida" correrá con éxito.