1:
Ja. Die Compiler kompilieren in IL-Code, der in jedem System ausgeführt wird.
Nicht jede Bibliothek ist in Mono implementiert, aber diejenigen, die funktionieren, sollten nahtlos funktionieren. Außerdem hat der Code geschrieben werden independend des Systems werden richtig zu arbeiten, zum Beispiel:
- Verwenden
Path.DirectorySeparatorChar
und Path.Combine
zu Dateipfade zu bilden, anstatt die Stringliteral "\"
oder "/"
verwenden.
- Verwenden Sie die BitConverter-Klasse, um eine Byte-Manipulation durchzuführen, die unabhängig von Big-Endian/Little-Endian-Architektur ist.
2:
Möglicherweise gibt es einige Unterschiede in welchem Code werden die Compiler generieren, aber wie fast alle Optimierung wird durch den JIT-Compiler durchgeführt, die nur selten messbaren Unterschied machen sollte.
3:
Die EXE- und DLL-Dateien enthalten keinen systemeigenen Code, sie enthalten IL-Code. Der native Code wird vom JIT-Compiler generiert, wenn die exe/dll geladen wird.
Mit mono können Sie die AOT (Ahead Of Time) Compilation verwenden. Dadurch werden Ihre .NET-Assemblys (mit IL-Code) in nativen Code wie dem von C++ oder C erstellten Code kompiliert, was eine schnellere Startzeit, eine bessere Speicherleistung und möglicherweise eine bessere Gesamtleistung ermöglicht. Es funktioniert jedoch nur auf der Betriebsumgebung (OS + x86/x64), auf der es kompiliert wird. http://www.mono-project.com/AOT –
Danke für diese Info. – jameszhao00
@C Rogers - so ein bisschen wie NGEN (nur vielleicht mit der GAC); -p –