2009-07-02 4 views
7

Un'applicazione in .NET deve essere compilata a 64 bit per sfruttare al massimo una macchina con un sistema operativo a 64 bit o trarne vantaggio come 32 bit build. Fondamentalmente, abbiamo un problema con un'eccezione di memoria insufficiente ed è stato suggerito di eseguire l'app della console su una scatola a 64 bit che "potrebbe" risolvere il problema. La domanda è: possiamo semplicemente creare un box da 64 e lanciarci l'app corrente o devo ricostruire l'app in un modo a 64 bit..net console app 32 vs 64 bit

risposta

12

Se la tua app è configurata per la piattaforma "Any CPU", verrà eseguita correttamente su entrambi.

Assicurati solo che non utilizzi materiale specifico 32/64 bit, o ti imbatti in problemi.

MSDN documenti here.

Per qualche discussione sulla svantaggi, vedere here

+7

Questo non è strettamente vero a partire da .Net 4.5, è inoltre necessario deselezionare preferisci 32 bit nelle impostazioni del progetto, vedere: http: // blog .microsoft.co.il/sasha/2012/04/04/what-AnyCPU-davvero-mezzi-as-a-net-45-e-visual-studio-11 / – gmn

5

Se è costruito per qualsiasi piattaforma (il default), verrà eseguito a 64 bit su sistemi operativi a 64 bit.

Detto questo, ci sono ancora problemi potenziali da tenere sotto osservazione. Se si interfaccia con il codice nativo (tramite p/invoke, C++/CLI o COM), sarà necessario portare tale codice a 64 bit. Se l'applicazione è gestita al 100%, funziona.

1

"Qualsiasi CPU" è tuo amico.

Per inciso:

Abbiamo avuto un numero particolarmente elevato Trie struttura che ha superato lo spazio di memoria 2GB di Windows a 32 bit. Poiché la maggior parte della struttura comprende riferimenti a oggetti, abbiamo riscontrato che i requisiti di memoria dell'app sono quasi raddoppiati quando si passa a 64 bit, richiedendo circa 4 GB. Questo perché la memoria per memorizzare un riferimento è 64 bit invece di 32.