2010-12-28 2 views
11

Mi piacerebbe sapere la differenza tra le modalità .NET x86 e x64.Qual è la differenza tra Microsoft.NET Framework e Microsoft.NET Framework64?

  1. Qual è la differenza per entrambi i modi?

  2. posso compilare le mie librerie, ad esempio con x64 e x86 .NET .NET?

  3. sarebbe alcuna differenza per me se scelgo x64 invece di 86?

  4. Qual è il vantaggio di .NET x64?

  5. Devo installare nulla di speciale, se voglio usare .NET x64?

+1

In genere, si compila _non_ le librerie in modo esplicito per 32 o 64 bit ma per "qualsiasi CPU" e si lascia che sia la macchina di destinazione (o l'applicazione principale) a scegliere, quale correre. –

+1

Se scegli una modalità, l'app sarà più leggera ma non potrà essere eseguita sull'altra piattaforma ... – ykatchou

risposta

14

Complesso domanda, cercherò di semplificare:

  1. Qualsiasi applicazione Net può essere compilato sia per x86 (32-bit) e x64 (64-bit) in una sola volta. In realtà lo fanno di default. Puoi cambiarlo modificando la CPU di destinazione nella scheda Build in Proprietà del progetto. Gli obiettivi supportati sono "Qualsiasi" (compilazione Just-In-Time a 32 o 64 bit a seconda del supporto del sistema operativo), "x86" verrà compilato a 32 bit che funziona su tutte le piattaforme e "x64" verrà compilato a 64 -bit che funziona solo su piattaforme a 64 bit.

  2. Sì. Vedi sopra. Si noti inoltre che a volte viene eseguito un secondo livello di compilazione, ovvero NGEN. Crea un'immagine nativa per un tipo specifico di CPU. Tuttavia, se si scherza con questo già lo sai.

  3. Per dll scegliamo "Qualsiasi" CPU per loro. Per .EXE (entry point) devi scegliere Any, x86 o x64. Ci sono alcune cose da considerare: le app x86 .Net che accedono ai file .dll nativi di Windows (interpo) richiedono i file .dll x86. Pertanto, un'app a 64 bit non può accedere alle chiamate API a 32 bit e viceversa. Questo è spesso un motivo per cui le app .Net falliscono sui sistemi operativi a 64 bit. Il modo per risolvere questo è quello di fare riferimento a file .dll corretti o semplicemente impostare l'applicazione .Net su x86 (32 bit) sotto le proprietà. Tutte le altre dipendenze diventeranno automaticamente 32 bit durante la compilazione del Just-In-Time se sono impostate su "Qualsiasi".

  4. I vantaggi di 64-bit sono complessi. Ci sono vantaggi e svantaggi a seconda di cosa fa la tua app. Il vantaggio più ovvio è che l'applicazione può rompere la barriera di memoria da 2 GB. Lo svantaggio è come spiegato in # 3, se si fa riferimento a 64 bit .dll la tua app non verrà eseguita su sistemi operativi a 32 bit.

  5. Tutto viene fuori dalla scatola. Non preoccuparti di nulla, tranne tutte le cose di cui sopra. :)

0
  1. Se si compila il codice per Qualsiasi CPU, un x64 cerca di caricare nativi, DLL esterne come la versione x64. Questo potrebbe essere problematico se quella DLL è a 32 bit. Genera un'eccezione.
  2. Sì, lo puoi costruire come Qualsiasi CPU
  3. s. 1
  4. È (possibile) utilizzare internamente i vantaggi x64 del sistema operativo come memoria da 4 GB + ecc.
  5. No, questo è fatto da.Programma di installazione NET per impostazione predefinita.
0
  1. ci sono modi per piattaforme a 32bit o 64bit (sistemi operativi)
  2. Sì, è possibile - in realtà VS installa la versione a 32 bit di CLR sul computer x86 e 32 bit e 64 bit (entrambi) versioni di CLR su Windows 64 bit. Poiché VS è un'applicazione a 32 bit, funziona con WOW64 su computer a 64 bit.
  3. Molte applicazioni si comportano in modo identico sia sul CLR a 32 bit che sul CLR a 64 bit. Ma ci possono essere alcune differenze (ad esempio invocazione piattaforma errata che usa Int32 per handle invece di IntPtr)
  4. Lo stesso come vantaggio di sistemi operativi a 64 bit rispetto a quelli x86
  5. Se si utilizza Windows a 64 bit e VS2010 , quindi hai tutto il necessario per sviluppare .net x64