2010-12-28 11 views
11

Me gustaría saber la diferencia entre los modos .NET x86 y x64.¿Cuál es la diferencia entre Microsoft.NET Framework y Microsoft.NET Framework64?

  1. ¿Cuál es la diferencia en ambos modos?

  2. ¿Puedo compilar mis bibliotecas, por ejemplo, con .NET x64 y .NET x86?

  3. ¿Hubiera alguna diferencia para mí si elijo x64 en vez de x86?

  4. ¿Cuál es la ventaja de .NET x64?

  5. ¿Debo instalar algo especial si quiero usar .NET x64?

+1

Ususally, usted _no compila sus bibliotecas explícitamente para 32 o 64 bit pero para "cualquier CPU" y deja que la máquina de destino (o su aplicación principal) elijan, cual correr –

+1

Si elige un modo, la aplicación será más ligera pero no podría ejecutarse en la otra plataforma ... – ykatchou

Respuesta

14

cuestión compleja, voy a tratar de simplificar:

  1. Cualquier aplicación .Net puede ser compilado para x86 (32 bits) y x64 (64 bits) a la vez. En realidad lo hacen por defecto. Puede cambiar esto cambiando la CPU de destino en la pestaña Generar en Propiedades del proyecto. Los objetivos admitidos son "Cualquiera" (compilará Just-In-Time a 32 o 64 bits dependiendo del soporte del sistema operativo), "x86" se compilará a 32 bits, que funciona en todas las plataformas, y "x64" se compilará a 64 -bit que solo funciona en plataformas de 64 bits.

  2. Sí. Véase más arriba. También tenga en cuenta que a veces se realiza un segundo nivel de compilación, y ese es el NGEN. Crea una imagen nativa para un tipo de CPU específico. Sin embargo, si te metes con esto, ya lo sabes.

  3. Para .dll elija "Cualquier" CPU para ellos. Para .EXE (punto de entrada) debe elegir Cualquiera, x86 o x64. Hay algunas cosas a considerar: las aplicaciones x86 .Net que acceden a los archivos .dll nativos de Windows (interpo) requieren x86 .dll-files. Por lo tanto, una aplicación de 64 bits no puede acceder a llamadas API de 32 bits y viceversa. A menudo, esto es un motivo para que las aplicaciones .Net fallen en los sistemas operativos de 64 bits. La forma de resolver esto es hacer referencia a los .dll correctos o simplemente establecer la aplicación .Net a x86 (32 bits) bajo las propiedades. Todas las demás dependencias se convertirán automáticamente en 32 bits durante la compilación Just-In-Time si están configuradas en "Cualquiera".

  4. Las ventajas de 64 bits son complejas. Existen ventajas y desventajas según lo que hace tu aplicación. La ventaja más obvia es que su aplicación puede romper la barrera de memoria de 2GB. La desventaja es como se explica en el n. ° 3, si hace referencia a .dll de 64 bits, su aplicación no se ejecutará en sistemas operativos de 32 bits.

  5. Todo sale de la caja. No te preocupes por nada, excepto por todo lo de arriba. :)

0
  1. Si está compilando el código de Cualquier CPU, un 64 intenta cargar, DLLs externos nativos como la versión de 64 bits. Eso podría ser problemático si esa DLL es de 32 bits. Lanza una excepción.
  2. Sí, puede compilarlo como Cualquier CPU
  3. s. 1
  4. Puede (internamente) utilizar las ventajas x64 del sistema operativo como 4 GB + memoria, etc.
  5. No, esto lo hace.NET instalador por defecto.
0
  1. Hay modos para plataformas de 32 bits o de 64 bits (Sistemas Operativos)
  2. Sí, se puede - en realidad VS instala la versión de 32 bits de CLR en el ordenador x86 y 32 bits y 64 bits (dos de ellos) versiones de CLR en Windows de 64 bits. Como VS es una aplicación de 32 bits, se ejecuta en WOW64 en equipos de 64 bits.
  3. Muchas aplicaciones se comportan de forma idéntica tanto en el CLR de 32 bits como en el CLR de 64 bits. Sin embargo, puede haber algunas diferencias (por ejemplo incorrecto invocación de plataforma que utilizan Int32 para mangos en lugar de IntPtr)
  4. Al igual que las ventajas de los sistemas operativos de 64 bits vs los x86
  5. Si está utilizando Windows de 64 bits y VS2010 , entonces usted tiene todo lo que necesita para desarrollar .net x64
Cuestiones relacionadas