Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
inInt32
.
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:
- Nella documentazione di Windows SDK, vedere Guida alla programmazione per Windows a 64 bit.
- Per informazioni sul supporto di Visual Studio per la creazione di applicazioni a 64 bit, vedere Supporto dell'IDE di Visual Studio a 64 bit.
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 .