2009-07-22 7 views

Répondre

5

Lorsque vous utilisez aot = full (uniquement pris en charge sur quelques plates-formes), aucun code ne sera généré au moment de l'exécution. Mais vous avez toujours besoin d'un runtime pour fournir la plupart des fonctionnalités que votre application utilise. Le runtime de Mono inclut le support pour le garbage collection, la gestion des threads, la couche IO, la couche IOremapping, l'interface avec le système d'exploitation, le support pour le type décimal, la réflexion (ainsi vous pouvez faire type.GetMethods() par exemple) .

+0

OK je pense que je l'obtiens merci, c'est le code natif avec une durée d'exécution, un peu analgésique avec vb6 à cet égard, peut-être – jjb

2

La compilation AOT est que Mono compilera les méthodes au code natif avant l'exécution du programme. Vous pouvez lire à ce sujet here

+0

Merci pour le lien, si l'option AOT = Full est utilisée, est-ce que toutes les dépendances sur une exécution sont supprimées et le code résultant est non géré? Désolé si c'est une question stupide – jjb

+0

à savoir que le code peut être exécuté sur une machine sans mono? – jjb

+0

le code est compilé en code natif, mais il a toujours besoin des bibliothèques. – Aragorn

2

Oui, le résultat est le code natif, mais dans la version AOT de base, cela nécessite encore l'exécution de Mono. Ce qui se passe dans le scénario "Mono sur iPhone" est un peu plus complexe. Tout d'abord, les bibliothèques gérées sont rognées en utilisant Mono Linker. Ensuite, le résultat est compilé en code natif avec mono --aot=full. Enfin, tout ceci est passé à mkbundle pour l'emballer dans un seul exécutable, y compris le moteur d'exécution Mono.

Si vous souhaitez exécuter des applications .Net sans installer Microsoft .Net/Mono, utilisez simplement mkbundle.

+0

Merci qui m'aide à mieux le comprendre – jjb