Condividi tramite


Applicazioni a 64 bit

Quando si compila un'applicazione, è possibile specificare che deve essere eseguita in un sistema operativo Windows a 64 bit come applicazione nativa o in WOW64 (Windows a 32 bit in Windows 64 bit). WOW64 è un ambiente di compatibilità che consente l'esecuzione di un'applicazione a 32 bit in un sistema a 64 bit. WOW64 è incluso in tutte le versioni a 64 bit del sistema operativo Windows.

Esecuzione di applicazioni a 32 bit e a 64 bit in Windows

Le applicazioni a 32 bit basate su .NET Framework 4 o versioni successive vengono eseguite in WOW64 nei sistemi a 64 bit.

Annotazioni

A causa della progettazione dell'emulazione x86 e del sottosistema WOW64 per la famiglia di processori Itanium, le applicazioni sono limitate all'esecuzione su un processore. Questi fattori riducono le prestazioni e la scalabilità delle applicazioni .NET a 32 bit eseguite nei sistemi basati su Itanium. È consigliabile usare .NET Framework 4 o versione successiva, che include il supporto a 64 bit nativo per i sistemi basati su Itanium, per migliorare le prestazioni e la scalabilità.

Per impostazione predefinita, quando si esegue un'applicazione gestita a 64 bit in un sistema operativo Windows a 64 bit, è possibile creare un oggetto di non più di 2 gigabyte (GB). Tuttavia, in .NET Framework 4.5 e versioni successive è possibile aumentare questo limite. Per altre informazioni, vedere l'elemento< gcAllowVeryLargeObjects>.

Molti assembly vengono eseguiti in modo identico sia in CLR a 32 bit che in CLR a 64 bit. Tuttavia, alcuni programmi potrebbero comportarsi diversamente, a seconda del CLR; se contengono uno o più dei seguenti elementi:

  • Strutture che contengono membri che modificano le dimensioni a seconda della piattaforma (ad esempio, qualsiasi tipo di puntatore).
  • Aritmetica del puntatore che include dimensioni costanti.
  • Dichiarazioni platform invoke o COM non corrette che utilizzano Int32 per gestire anziché IntPtr.
  • Codice che esegue il casting di IntPtr in Int32.

Per altre informazioni su come convertire un'applicazione a 32 bit da eseguire in CLR a 64 bit, vedere Migrazione di codice gestito a 32 bit a 64 bit.

Informazioni generali sulla programmazione a 64 bit

Per informazioni generali sulla programmazione a 64 bit, vedere i documenti seguenti:

Supporto del compilatore per la creazione di applicazioni a 64 bit

Per impostazione predefinita, quando si usa .NET per compilare un'applicazione in un computer a 32 bit o a 64 bit, l'applicazione verrà eseguita in un computer a 64 bit come applicazione nativa, ovvero non in WOW64. Nella tabella seguente sono elencati i documenti che illustrano come usare i compilatori di Visual Studio per creare applicazioni a 64 bit che verranno eseguite come native, in WOW64 o entrambe.

Compilatore Opzione del compilatore
Visual Basic -piattaforma (Visual Basic)
Visual C# -platform (opzioni del compilatore C#)
Visual C++ È possibile creare applicazioni CIL (Common Intermediate Language) indipendenti dalla piattaforma usando /clr:safe. Per altre informazioni, vedere -clr (compilazione Common Language Runtime).

Visual C++ include un compilatore separato per ogni sistema operativo a 64 bit. Per altre informazioni su come usare Visual C++ per creare applicazioni native eseguite in un sistema operativo Windows a 64 bit, vedere Programmazione a 64 bit.

Determinazione dello stato di un file .exe o di un file di .dll

Per determinare se un file .exe o .dll deve essere eseguito solo in una piattaforma specifica o in WOW64, usare CorFlags.exe (Strumento di conversione CorFlags) senza opzioni. È anche possibile usare CorFlags.exe per modificare lo stato della piattaforma di un file di .exe o .dll. L'intestazione CLR di un assembly di Visual Studio ha il numero di versione di runtime principale impostato su 2 e il numero di versione di runtime secondario impostato su 5. Le applicazioni con versione di runtime secondaria impostata su 0 vengono considerate come applicazioni legacy e vengono sempre eseguite in WOW64.

Per eseguire una query a livello di codice su un .exe o .dll per verificare se deve essere eseguita solo in una piattaforma specifica o in WOW64, usare il Module.GetPEKind metodo .