Que se passe-t-il si je veux exécuter une application .NET sur un ordinateur où le .NET framework n’est pas disponible ? Est-il possible de compiler l’application en code natif ?
Réponses
Trop de publicités?Microsoft a un article vous expliquant comment vous pouvez Compiler MSIL en Code Natif
Vous pouvez utiliser Ngen.
La Génération D'Images Natives (Ngen.exe) est un outil qui améliore la la performance de la gestion des applications. Ngen.exe crée des images natives, qui sont des fichiers contenant des compilé spécifiques au processeur de code machine, et installe dans l'image native cache sur l'ordinateur local. L' runtime pouvez utiliser les images natives de l' cache au lieu d'utiliser la juste-à-temps (JIT) compilateur pour compiler l'original de l'assemblée.
Malheureusement, vous avez encore besoin des bibliothèques du cadre afin d'exécuter votre programme. Il n'y a pas de fonction que je connais, avec le MME .Net framework SDK qui permet de compiler tous les fichiers nécessaires dans un seul exécutable
Microsoft a annoncé son .NET Native Preview qui permettra d’exécuter des applications .NET sans passer par la framework est installé.
Jetez un oeil : http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx
J’ai testé plusieurs d'entre eux et en ce moment, la seule qui prend en charge .NET 3.5 et dispose également d’une pile de virtualisation grand est Xenocode postgénération
Avec ngen, vous devez toujours faire du .NET framework installé, mais en utilisant un outil comme tel que tout votre code managé est compilé en code natif, donc vous pouvez les déployer pour machines sans la présence de cadre.
Oui, à l'aide de Ngen, la génération d'Images Natives. Il ya, cependant, un certain nombre de choses que vous devez être au courant:
- Vous avez encore besoin de le CLR pour exécuter votre exécutable.
- Le CLR ne sera pas optimiser dynamiquement vos assemblées en fonction de l'environnement il est exécuté en (p. 486 vs 586 vs 686, etc.)
Dans l'ensemble, il ne vaut l'aide de Ngen si vous avez besoin de réduire le temps de démarrage de votre application.