Vrem sa ne asiguram ca aplicatia pe care am construit-o va rula fara nici o problema si pe arhitectura x86 (32 biti) si pe arhitectura x64 (64 biti). Daca folosim Visual Studio ca IDE, se poate selecta din proprietatile proiectului, sectiunea Build, optiunea Platform target. Aceasta are ca valori: Any CPU, X86, X64, Itanium.
Pe baza valorilor setate, compilatoarele vor genera codul IL care va fi transformat de CLR prin compilatoarele JIT in cod nativ pentru platforma respectiva. Schimbarea acestei setari nu va genera cod diferit, ci doar va stabili arhitectura compatibila.
Presupunem ca avem un assembly .Net (Any CPU) cu referinta catre un alt assembly .NET sau catre un unmanaged DLL, compilat pe o anumita arhitectura (32 de biti). Acest scenariu pe un sistem de operare cu 32 de biti va functiona foarte bine pentru ca .NET assembly va fi compilat JIT ca 32 de biti.
Pe un sistem de operare cu 64 de biti, .NET assembly va fi compilat JIT pe 64 de biti si va incerca sa apeleze dll-ul care e pe 32 de biti, acest lucru nefiind permis. Pentru ca pe o arhitectura de 64 de biti procesele de 32 de biti ruleaza fara probleme (de fapt, procesele vor rula in WOW64, o componenta a sistemului de operare care va crea proceselor “iluzia” unui sistem de operare pe 32 de biti), rezolvarea consta in schimbarea arhitecturii la 32 de biti pentru assembly-ul .NET.