Viene NGEN utilizzato per il codice .NET di compilazione in un binario che non richiede .NET framework per essere installato quando si esegue il codice?
Domanda
ho letto il seguente paragrafo relativo articolo di Wikipedia su CLR:
In alternativa, il codice CIL può essere compilato in codice nativo in un separato passo prima runtime tramite Immagine Native Generator (NGEN). Questo accelera tutte le corse successive del software come il CIL-to-native la compilazione non è più necessario.
Questo significa che posso prendere qualsiasi programma .NET e compilarlo a un binario che sarà poi in grado di eseguire sulla macchina di quello non hanno installato il .NET framework?
Soluzione
No.
Ciò significa che non sarà necessario eseguire il JIT (Just-In-Time) compilatore quando si esegue il codice, dal momento che è già convertito in codice macchina da NGen. I binari risultanti hanno ancora dipendenze del framework .Net, e questo devono essere installati separatamente sulla macchina.
Ci sono strumenti quale pacchetto le assemblee framework .Net e le include i binari in un modo che non è necessario il framework .Net. Scopri http://www.xenocode.com/ . VMWare ha acquistato uno strumento chiamato Thinstall, che mi sembra possa anche fare questo: http: //www.vmware. com / prodotti / ThinApp / .
Altri suggerimenti
MSDN pagina per Ngen dove si afferma:
Ngen.exe crea immagini native, che sono file che contengono codice macchina processore specifico compilato, e li installa nella cache delle immagini native sul computer locale. Il runtime può usare immagini native dalla cache invece di usare il compilatore just-in-time (JIT) per compilare il gruppo originale.
mezzi (per me) che Ngen fa proprio quello che il compilatore JIT fa e salva i risultati. Non dice nulla circa compresi i tempi di esecuzione .NET nei binari.
'NGen' basta compila il codice. Essa non collega staticamente l'intero framework .NET in esso.
Mono, tuttavia, non avere un compilatore statico e linker che può fare questo. Ecco ad esempio come funziona supporto per iPhone di Mono.