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?

StackOverflow https://stackoverflow.com/questions/3173116

  •  02-10-2019
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top