visual there the studio msil compilar built being amd64 c# .net visual-studio-2012 compilation cpu-architecture

c# - there - visual studio compilar 64 bits



¿Cuál es el propósito de la configuración "Preferir 32 bits" en Visual Studio 2012 y cómo funciona realmente? (2)

El motivo es: en caso de que no desee utilizar más memoria con aplicaciones de 64 bits. Lo que significa que si su aplicación es AnyCPU , desea ejecutarla como 32 bits.

Para agregar más, la configuración en Visual Studio se dirige a la CLR particular:

Visual Studio instala la versión de 32 bits del CLR en una computadora x86, y tanto la versión de 32 bits como la versión apropiada de 64 bits del CLR en una computadora Windows de 64 bits. (Debido a que Visual Studio es una aplicación de 32 bits, cuando se instala en un sistema de 64 bits, se ejecuta en WOW64).

Consulte el artículo Aplicaciones de 64 bits ( MSDN ).

No me queda claro cómo el compilador sabrá automáticamente compilar para 64 bits cuando lo necesite. ¿Cómo sabe cuándo puede apuntar con confianza a 32 bits?

Tengo curiosidad sobre cómo el compilador sabe a qué arquitectura apuntar al compilar. ¿Analiza el código y toma una decisión basada en lo que encuentra?


Es tan extraño que nadie enlace a la entrada del blog Lo que AnyCPU significa realmente a partir de .NET 4.5 y Visual Studio 11 :

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 preferida", que es el nuevo valor predeterminado (en general, ahora hay cinco opciones para el / compilador del compilador C #: x86, Itanium, x64, anycpu y anycpu32bitpreferred ) Cuando se usa el sabor "Perfer 32-Bit" 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 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 está compilado con 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 está compilado 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, sino una aplicación "Cualquier CPU de 32 bits preferida" se ejecutará con éxito.