2009-06-12 6 views
11

Se ho un'applicazione .NET compilata "Qualsiasi CPU", funzionerà in modalità 64 bit su un sistema operativo a 64 bit.Esiste un modo per forzare l'esecuzione di un'app compilata con "Qualsiasi CPU" in modalità 32 bit su sistema operativo a 64 bit?

Ma se io, per qualsiasi motivo, voglio forzare questa app per funzionare in modalità 32 bit. (Come se fosse compilato usando "x86"). La ricompilazione non è un'opzione, quindi è possibile configurarlo in fase di esecuzione? Con il file .manifest forse?

risposta

10

io credo che si possa fare questo con CorFlags.exe

Qualcosa di simile:
CorFlags yourassembly.exe/32bit +

Nota che se il gruppo è forte il nome sarà anche necessario utilizzare l'opzione/forza che rompe i nomi forti, quindi dovrai dimettersi dall'assemblea.

+0

Beh, questo è sfortunatamente non è fattibile. L'app in questione ha un nome forte e viene distribuita agli utenti finali (consumatori), e la nuova firma non è nemmeno un'opzione. Peccato. –

+1

È possibile impostare CLR per saltare la verifica del nome sicuro per un assieme specificato. Utilizzo di "sn.exe -Vrassemblyname" (-Vu per riattivare). Ovviamente questo dovrebbe essere eseguito sulla macchina dei clienti. In realtà non lo consiglio, poiché la disattivazione della verifica del nome forte causa fondamentalmente un buco di sicurezza nel CLR, qualsiasi assembly può essere copiato sulla tua app e ricevere automaticamente la piena fiducia (vedere: http://msdn.microsoft.com/en -us/library/k5b5tt23.aspx). La mia raccomandazione è di non scherzare con questo, trovare un modo per fare una ricompilazione, o non farlo. –

+0

@Simon P.Stevens, sono d'accordo con te su tutti i punti. La mia speranza era che potesse essere una voce nel file manifest che potevo distribuire. Ma non sembra questo il caso. –