¿Qué significa el indicador de compilador "Prefer 32-bit" para Visual Studio (C#, VB)?


Acaba de instalar Visual Studio 11 developer preview. Veo una nueva opción en las propiedades del proyecto llamada "Prefer 32-bit" al compilar una aplicación administrada (C#, VB) con el objetivo AnyCPU especificado. Esto no parece ser una opción para bibliotecas de clases, solo aplicaciones de nivel superior.

¿Qué indica esta bandera?

Author: David Cuccia, 2011-09-22

3 answers

Probablemente indica que la aplicación es AnyCPU, pero cuando 32 bits está disponible, debería ejecutarse como tal. Esto tiene sentido: las aplicaciones de 64 bits usan más memoria, y a veces simplemente no necesita el espacio de memoria;)

 12
Author: TomTom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-22 04:38:44

EDITAR: La aplicación compilada con "Any CPU 32-bit preferred" es compatible con x86, x64 y ARM, mientras que x86 es compatible solo con x86, x64 y no ARM. Para más detalles, véase este.

 3
Author: qub1n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-13 07:45:57

Hay un buen artículo en Lo Que AnyCPU Realmente Significa A Partir De.NET 4.5 y Visual Studio 11.

La respuesta corta a tu pregunta es " Al usar 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 está compilado en código máquina x86. Si el proceso se ejecuta en un sistema Windows de 64 bits, se ejecuta como un proceso de 32 bits. IL está compilado en código máquina x86. Si el proceso se ejecuta en una ventana ARM sistema, se ejecuta como un proceso de 32 bits. IL se compila para armar código máquina. La diferencia, entonces, entre" Any CPU 32-bit preferred "y" x86 "es solo esto: una aplicación.NET compilada a x86 no se ejecutará en un sistema Windows ARM, pero una aplicación" Any CPU 32-bit preferred " se ejecutará con éxito."

 1
Author: MBentley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-05 15:50:50