Come già accennato, l'IL nell'assembly .NET è indipendente dalla piattaforma (è ciò che implica l'impostazione Qualsiasi CPU). Il compilatore JIT (just-in-time) del runtime .NET compilerà questo codice byte indipendente dalla piattaforma in codice nativo specifico della piattaforma con l'ottimizzazione specifica per tale piattaforma. Quindi normalmente non c'è nulla di cui dovresti preoccuparti.
Tuttavia, se si imposta esplicitamente il progetto da compilare con x64 come target della piattaforma, l'assembly non verrà più eseguito su un runtime x86 (e viceversa per x86 sull'obiettivo della piattaforma). Questo è utile solo se il tuo codice ha dipendenze da librerie native x64/x86 come componenti COM in-process.
Come ha aggiunto Rowland in un commento, l'obiettivo della piattaforma non deve essere confuso con il testimone del sistema operativo sottostante. Gli assembly .NET con x86 come piattaforma target verranno eseguiti su entrambe le versioni di Windows a 32 e 64 bit (ovvero come processo a 32 bit in modalità WOW64).
In effetti, probabilmente lo scenario più comune per utilizzare l'impostazione di destinazione della piattaforma è quando l'assembly .NET ha un riferimento a un componente COM a 32 bit. Per essere in grado di eseguire l'assembly su un sistema x64, l'assembly deve essere compilato con il flag x86. Su un sistema operativo a 64 bit e con l'impostazione Qualsiasi CPU abilitata, il runtime eseguiva l'assembly in un processo a 64 bit e il caricamento del componente COM a 32 bit nel processo a 64 bit non avrebbe avuto esito positivo. Compilando con il flag x86, il runtime .NET esegue l'assembly in un processo a 32 bit e quindi il componente COM può essere caricato in modo sicuro.
fonte
2010-02-02 12:50:36
x86 Le app .NET verranno eseguite su x64, ma non viceversa. –