1:
Oui. Les compilateurs se compilent en code IL, qui s'exécute dans l'un ou l'autre système.
Toutes les bibliothèques ne sont pas implémentées dans Mono, mais celles qui le sont devraient fonctionner de manière transparente. En outre, le code doit être écrit à independend du système fonctionne correctement, par exemple:
- Utilisez
Path.DirectorySeparatorChar
et Path.Combine
pour former des chemins de fichiers, au lieu d'utiliser la chaîne littérale "\"
ou "/"
.
- Utilisez la classe BitConverter pour effectuer une manipulation d'octets indépendante de l'achitecture big-endian/little-endian.
2:
Il peut y avoir quelques différences dans ce code, les compilateurs génèrent, mais comme la quasi-totalité est fait par l'optimisation du compilateur JIT qui devrait rarement faire une différence mesurable.
3:
Les fichiers exe et dll ne contiennent pas de code natif, ils contiennent du code IL. Le code natif est généré par le compilateur JIT lorsque le fichier exe/dll est chargé.
Avec le mode mono, vous pouvez utiliser la compilation AOT (Ahead Of Time). Cela compilera vos assemblys .NET (avec code IL) en code natif comme celui produit par C++ ou C, ce qui accélérera le démarrage, améliorera les performances de la mémoire et améliorera potentiellement les performances globales. Cependant, il ne fonctionnera que sur l'environnement d'exploitation (OS + x86/x64) sur lequel il est compilé. http://www.mono-project.com/AOT –
Merci pour cette info. – jameszhao00
@C Rogers - donc un peu comme NGEN (juste peut-être avec le GAC) ;-p –