Question

Je souhaite distribuer mes programmes .NET sans le framework .NET. Est-il possible de compiler un programme .NET en code machine?

Était-ce utile?

La solution

Oui, vous pouvez précompiler avec Ngen.exe, mais cela ne supprime pas la dépendance CLR.

Vous devez également expédier les assemblys IL, le seul avantage de Ngen est que votre application peut démarrer sans invoquer le JIT, vous obtenez donc un temps de démarrage très rapide.

Selon le CLR via C #:

  

De plus, les assemblys précompilés à l'aide de   Ngen sont généralement plus lents que JIT'ed   assemblées parce que le compilateur JIT   peut optimiser à la machine cible   (32 bits? 64 bits? Registres spéciaux?   etc.), tandis que NGEN produira simplement un   compilation de base.

EDIT:

Il y a un débat sur les informations ci-dessus de CLR via C #, car certains disent que vous devez exécuter Ngen sur la machine cible uniquement dans le cadre du processus d'installation.

Autres conseils

Remotesoft en a un: Éditeur de liens Salamander .NET

Je n'en ai aucune expérience cependant.

Certains outils tiers le font, par exemple.

Le Postbuild Xenocode . Je ne l’ai cependant pas fait moi-même, car cela coûte environ le produit national brut d’un petit pays africain et tous ...

  

Est-il possible de compiler du code .NET IL   au code machine?

Oui, mais .NET Framework le fait pour vous au moment de l'exécution (par défaut) ou au moment de l'installation (ngen). Parmi d'autres raisons, cette IL - > le code machine est défini séparément sur chaque machine d'installation afin qu'il puisse être optimisé pour cette machine particulière.

  

Je souhaite distribuer mon .NET   programmes sans le framework .NET.   Est-il possible de compiler un .NET   programme en code machine?

Non, à toutes fins pratiques, vous ne pouvez pas le faire. Les solutions de contournement tierces peuvent fonctionner dans certains scénarios, mais à ce moment-là, je ne le prendrais pas vraiment en considération, "code géré". ou " .NET " plus.

Oui, vous pouvez maintenant! Récemment, Microsoft a annoncé .NET Native , une technologie compilant votre application avec le runtime .NET Native (ils l’appellent MRT) en un seul binaire (en réalité un exécutable et une bibliothèque dynamique).

Voir les liens: http: //blogs.msdn .com / b / dotnet / archive / 2014/04/02 / advertizing-net-native-preview.aspx http://blogs.msdn.com/b /dotnet/archive/2014/04/24/dotnetnative-performance.aspx

Il existe IL2CPU pour la partie compilation.

Je ne pense pas que ce soit possible. Vous pouvez créer un assemblage pré-assigné mais vous avez toujours besoin du framework.

Si vous vous souciez simplement de la taille du déploiement de la structure, vous pouvez en savoir plus sur this .

Je pense que vous ne devriez pas: c’est la tâche du compilateur JIT.

Cependant, vous pouvez utiliser ClickOnce ou Windows Installer pour le déployer de manière à ce que l'infrastructure manquante ne pose pas un problème aussi important: vous pouvez indiquer au programme d'installation de télécharger l'infrastructure et de l'installer.

Regardez le projet MONO: commande mono avec l’option --aot. http://www.mono-project.com/AOT

J'avais toujours pensé que ce serait cool de compiler directement c # en code machine sans la dépendance CLR ....

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