Est NGEN utilisé pour compiler le code .NET dans un binaire qui ne nécessite .NET Framework doit être installé lors de l'exécution du code?

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

  •  02-10-2019
  •  | 
  •  

Question

Je lis le paragraphe suivant sur l'article de Wikipédia sur le CLR:

  

Vous pouvez également le code CIL peut être   compilé en code natif dans un document distinct   l'étape préalable à l'exécution en utilisant le   Générateur Native Image (NGEN). Cette   accélère toutes les courses ultérieures du   logiciel comme le CIL à natif   la compilation n'est plus nécessaire.

Est-ce que cela signifie que je peux prendre un programme .NET et le compiler à un binaire qui sera alors en mesure d'exécuter sur la machine qui ne marche pas avoir le .NET Framework est installé?

Était-ce utile?

La solution

Non.

Cela signifie que vous ne devez exécuter le JIT (Just-In-Time) compilateur lorsque vous exécutez le code, car il est déjà converti en code machine par NGen. Les binaires résultants ont encore des dépendances sur le framework .Net, et cela doit être installé séparément sur la machine.

Il existe des outils qui emballent les ensembles .NET Framework et les inclure dans vos fichiers binaires d'une manière que le framework .Net est pas nécessaire. Consultez http://www.xenocode.com/ . VMWare a acheté un outil appelé Thinstall, que je pense peut aussi le faire: http: //www.vmware. com / products / ThinApp / .

Autres conseils

Lecture de la la page MSDN pour Ngen où il est dit:

  

Ngen.exe crée des images natives qui sont des fichiers contenant le code compilé machine spécifique au processeur, et les installe dans le cache d'image native sur l'ordinateur local. Le temps d'exécution peut utiliser des images natives du cache à l'aide au lieu du compilateur juste-à-temps (JIT) pour compiler l'assemblage d'origine.

moyens (pour moi) que Ngen fait exactement ce que le compilateur JIT fait et enregistre les résultats. Il ne dit rien au sujet, y compris les runtimes .NET dans les binaires.

'NGen' compile votre code. Il ne lie pas statiquement l'ensemble du cadre .NET en elle.

Mono, cependant, ne un compilateur statique et éditeur de liens qui peuvent le faire. C'est par exemple comment les travaux de support iPhone de Mono.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top