2009-07-22 5 views

Antwort

5

Wenn Sie aot = full verwenden (wird nur auf einigen Plattformen unterstützt), wird zur Laufzeit kein Code ausgegeben.

Sie benötigen jedoch immer noch eine Laufzeit, um viele der Funktionen bereitzustellen, die von Ihrer Anwendung verwendet werden. Monos Laufzeit umfasst Unterstützung für Garbage Collection, Thread-Management, IO-Layer, IOremapping-Layer, die Schnittstelle zum Betriebssystem, Unterstützung für den Dezimaltyp, Reflektion (damit Sie zB Dinge wie type.GetMethods() tun können) .

+0

OK Ich denke, ich bekomme es dank, es ist nativer Code mit einer Laufzeit, ein bisschen analog mit vb6 in dieser Hinsicht, vielleicht – jjb

2

AOT-Kompilierung ist, dass Mono Methoden zu nativem Code kompiliert, bevor das Programm ausgeführt wird. Sie können darüber lesen here

+0

Danke für den Link, wenn die AOT = Full Option verwendet wird, ist es der Fall, dass alle Abhängigkeiten von einer Laufzeit entfernt werden und der resultierende Code nicht verwaltet wird? Sorry, wenn das eine dumme Frage ist – jjb

+0

dh, dass der Code auf einer Maschine ohne Mono laufen kann? – jjb

+0

Der Code ist in nativen Code kompiliert, benötigt aber immer noch die Bibliotheken. – Aragorn

2

Ja, das Ergebnis ist nativen Code, aber in der grundlegenden AOT-Version muss noch die Mono-Laufzeit ausgeführt werden.

Was im Szenario "Mono on iPhone" passiert, ist etwas komplexer. Zuerst werden die verwalteten Bibliotheken unter Verwendung von Mono Linker getrimmt. Dann wird das Ergebnis in nativen Code mit mono --aot=full kompiliert. Schließlich wird all dies an mkbundle übergeben, um es in eine einzige ausführbare Datei zu packen, einschließlich der Mono-Laufzeitumgebung.

Wenn Sie nur .NET-Anwendungen ausführen möchten, ohne Microsoft .Net/Mono zu installieren, verwenden Sie einfach mkbundle.

+0

Danke, das hilft mir, es besser zu verstehen – jjb

Verwandte Themen