.net - Target 4.5.1 y cualquier CPU se ejecuta como 32 bits en x64, 4.5 se ejecuta como 64 bits, ¿Por qué?
visual-studio .net-4.5 (2)
Nada cambió en .NET 4.5.1 que afecte el bitness del proceso.
Una trampa muy común es que los programadores prestan demasiada atención al nombre de la Plataforma. Prominentemente se muestra en el cuadro de diálogo Build + Configuration Manager, por ejemplo. El nombre es irrelevante para los proyectos gestionados. Solo importa el tipo de proyectos que generan código de manera diferente según la selección de la Plataforma. Proyectos de C ++.
Lo que es peor es que el nombre predeterminado de la Plataforma cambió entre diferentes versiones de VS. Siempre solía ser AnyCPU. Luego se cambió a x86 en VS2010. Eso causó una gran confusión, por lo que se cambió de nuevo a AnyCPU en VS2012.
La configuración real que tiene un efecto está en Proyecto + Propiedades, pestaña Generar, configuración de destino de plataforma para el IDE de C #. Para VS2012 y hasta también la casilla de verificación "Preferir 32 bits". Solo para el proyecto EXE, se ejecuta primero y bloquea el bitness. Si selecciona x86 (o marca la casilla), se le indica al CLR que use el jitter x86 en lugar del jitter x64.
La casilla de verificación "Preferir 32 bits" está activada de forma predeterminada para un nuevo proyecto. Por lo tanto, ya tiene automáticamente una discrepancia entre el nombre de la plataforma de AnyCPU y el bitness real del proceso en ejecución. Oh Alegría.
El objetivo de Visual Studio 4.5.1 y cualquier CPU se ejecutan como 32 bits en x64, pero al apuntar a 4.5 y cualquier CPU se ejecutarán como 64 bits en el sistema x64. ¿Qué ha cambiado en 4.5.1 para que funcione en modo WOW?
Espero que esto tenga sentido ...
No estoy seguro de cuándo Visual Studio agregó la opción de "Preferir 32 bits", pero esto se comprobó. Con suerte, alguien no hará el mismo movimiento de noob que hice y verificará la configuración del proyecto. Gracias @TS