In .NET, l'opzione del compilatore "Piattaforma target: qualsiasi CPU" consente a un assembly .NET di funzionare come 64 bit su un computer x64 e 32 bit su una macchina x86. È anche possibile forzare un assembly a funzionare come x86 su una macchina x64 usando l'opzione del compilatore 'Piattaforma Target: x86'.Force x86 CLR su un assembly .NET "Any CPU"
È possibile eseguire un assembly con il flag "Any CPU", ma determinare se deve essere eseguito nel CLR x86 o x64? Normalmente questa decisione viene presa da CLR/OS Loader (come da mia comprensione) in base alla testimonianza del sistema sottostante.
Sto cercando di scrivere un'applicazione C# .NET in grado di interagire con (leggi: inserire codice in) altri processi in esecuzione. i processi x64 possono solo essere iniettati in altri processi x64 e lo stesso con x86. Idealmente, vorrei sfruttare la compilazione JIT e l'opzione Qualsiasi CPU per consentire a una singola applicazione di essere utilizzata per l'iniezione nei processi x64 o x86 (su una macchina x64).
L'idea è che l'applicazione sia compilata come Qualsiasi CPU. Su una macchina x64, sarebbe eseguito come x64. Se il processo di destinazione è x86, dovrebbe riavviarsi da solo, forzando il CLR a eseguirlo come x86. È possibile?
Sì, sono consapevole che è possibile forzarlo avvolgendolo in un assembly di avvio x86, ma mi chiedevo se fosse possibile forzarlo dinamicamente per assembly "Qualsiasi CPU" compilati. Grazie comunque, probabilmente tornerò su questo se non trovo altro. Sarebbe un voto negativo ma non abbastanza. – jeffora
I processi sono a 64 bit o a 32 bit. Se l'assembly è caricato in un processo a 32 bit ed è costruito come Any CPU, verrà JIT come 32 bit, nel processo a 64 bit sarà JITed come 64. Come pensate di creare l'assembly che ospita i vostri assembly? – jnoss