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?
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é?
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.