In generale, un'applicazione .NET Windows in un sistema operativo a 64 bit o deve essere modificata?Un'applicazione Windows Form .NET può funzionare in un sistema operativo a 64 bit o deve essere modificata?
risposta
Per la maggior parte dovrebbe funzionare bene. Dovresti stare attento se stai facendo qualcosa con codice nativo, che si tratti di codice gestito non sicuro, o di interop/PInvoke, ma se tutto il tuo codice è gestito non dovresti avere problemi.
Se non si basa su una libreria esterna a 32 bit (ad es. Componente COM), funzionerà perfettamente come un processo a 64 bit e ne sfrutterà i vantaggi (spazio degli indirizzi di grandi dimensioni, set di istruzioni x64, ...) . Se si basa su roba a 32 bit, la maggior parte delle volte è ancora possibile eseguirlo come applicazione a 32 bit impostando la piattaforma di destinazione su x86.
Un'applicazione puro NET viene eseguito su un sistema operativo a 64 bit senza modifiche.
Se si utilizza una libreria/CLI C++, utilizzare l'architettura specifici componenti COM, o fare qualsiasi P/Invoke chiamate, è possibile necessità di aggiornare l'applicazione per un ambiente a 64 bit.
La maggior parte dei sistemi operativi a 64 bit di sono in grado di gestire le applicazioni a 32 bit senza problemi. Questo è il motivo per cui vedi una cartella Programmi (x86) sul tuo sistema operativo a 64 bit per gestire molte delle tue vecchie app a 32 bit.
applicazioni più NET dovrebbero lavorare non modificato in 64 bit se si rivolgono x86 anziché Qualunque CPU che è il default VS.NET.
Finché non mescolare e piattaforme di libreria match, andrà tutto bene. Scegli come target x86 quando compilerai e dovresti essere bravo a farlo.
Secondo questo link: MSDN - Migrating 32-bit Managed Code to 64-bit.
Se si dispone di 100 tipo% di codice gestito sicuro allora davvero può solo copiarlo alla piattaforma a 64-bit ed eseguirlo con successo sotto il CLR a 64 bit. Oggetti
- Invocare API piattaforma tramite P/Invoke
- Invocare COM
- Facendo uso di codice non sicuro
- Utilizzando marshalling come un meccanismo:
Ma se si sta utilizzando una delle seguenti caratteristiche per condividere informazioni
- Utilizzo della serializzazione come modalità di stato permanente
indica che l'applicazione potrebbe non essere completamente compatibile.
Vuoi dire: "se/non/target x86 anziché ...". Targeting solo x86 creerebbe un problema. – Richard
@Richard: No, jsimas è corretto. Se si targetizza solo x86, l'app verrà eseguita su sistema operativo a 64 bit come processo a 32 bit (proprio come un exe x86 nativo in esecuzione su Windows 64 bit). Avrà praticamente lo stesso ambiente come se fosse eseguito su un sistema operativo a 32 bit. –