2011-09-22 11 views
23

Acabo de instalar la versión preliminar para desarrolladores de Visual Studio 11. Veo una nueva opción en las propiedades del proyecto llamada "Preferir 32 bits" al compilar una aplicación administrada (C#, VB) con el objetivo AnyCPU especificado. Esto no parece ser una opción para bibliotecas de clase, solo aplicaciones de nivel superior.¿Qué significa la bandera del compilador "Preferir 32 bits" para las aplicaciones administradas de Visual Studio 11 (C#, VB)?

¿Qué significa esta bandera?

+1

Debería consultar esta publicación, http://blogs.microsoft.co.il/blogs/sasha/archive/2012/04/04/what-anycpu-really-means-as-of-net-4- 5-and-visual-studio-11.aspx –

Respuesta

12

Es probable que indique que la aplicación es AnyCpu, pero cuando hay 32 bits disponibles, se ejecutará como tal. Esto tiene sentido - 64 aplicaciones bits utilizan más memoria, ya veces lo que no necesitan el espacio de memoria;)

+1

Las aplicaciones de 64 bits tampoco se pueden depurar con editar y continuar. Al establecer "Preferir 32 bits", con suerte los usuarios de x64 depurarán nuevamente las aplicaciones que se ejecutan en AnyCPU sin establecer el destino en compilación x86/32bit. – CodingBarfield

+12

Esta no es la respuesta correcta. Consulte http://blogs.microsoft.co.il/blogs/sasha/archive/2012/04/04/what-anycpu-really-means-as-of-net-4-5-and-visual-studio -11.aspx –

+6

Entonces, ¿por qué no publicarlo como respuesta ;-) –

2

EDIT: aplicación compilada con "Cualquier CPU de 32 bits preferido" es compatible con x86, x64 y ARM , mientras que x86 solo es compatible con x86, x64 y no con ARM. Para más detalles, vea this.

+2

Eso no es lo que dice el artículo. Lea de nuevo: 'una aplicación .NET compilada a x86 no se ejecutará en un sistema ARM de Windows, pero una aplicación" Cualquier CPU de 32 bits preferida "se ejecutará correctamente. ' –

+0

Gracias por sus comentarios, la respuesta ha cambiado. – qub1n

-1

creo que el comentario anterior es incorrecta, en referencia al enlace:

" ... una aplicación .NET compilado para x86 dejará de funcionar en un sistema de Windows ARM, sino una“Cualquier CPU de 32 bits la aplicación preferida se ejecutará correctamente.

+1

Después de comentar la respuesta a la que se refiere, noté su respuesta. Debería haber respondido a la declaración engañosa utilizando la función de comentario, pero ya lo he hecho. Aún puede eliminar su respuesta. –

1

Hay un buen artículo en What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11.

La respuesta corta a tu pregunta es "Al utilizar ese sabor de Cualquier CPU, la semántica son los siguientes:

Si el proceso se ejecuta en un sistema Windows de 32 bits, que se ejecuta como un proceso de 32 bits. IL se compila con 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 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 en 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 de Windows, pero una aplicación "Cualquier CPU de 32 bits preferida" w funcionará con éxito ".

Cuestiones relacionadas