Gibt es Arbeit, die getan wird, um einen C# -Compiler zu erstellen, um native Exe zu erzeugen? z.B. Die Ausgabe ist eine native exe und KEINE .NET-Assembly.Gibt es Arbeit, die getan wird, um einen C# -Compiler zu erstellen, um native Exe zu erzeugen?
Antwort
Warum versuchen Sie nicht NGen. Zum Beispiel verwendet Paint.NET nGen, um nach der Installation native Bilder zu erstellen.
solche Lösung gibt für Mono, das ist ‚mkbundle‘ - statische JIT/CLR/GAC statt mit Verknüpfung, ich denke,
Sie würden immer noch die Bibliotheken in irgendeiner Form zur Verfügung stellen müssen, um so entweder Sie‘ d muss noch eine Runtime installiert haben, oder die native exe müsste riesig sein.
Die kompilierte Größe exe kann mit Hilfe von Split-Bibliotheken gesteuert werden. –
Wenn Sie eine eigenständige Bereitstellung (d. H. Ohne das Framework) möchten, gibt es ein paar Optionen - siehe here. Mir ist jedoch nichts bekannt, was zuverlässig reinen Code erzeugt. Was ist der Anwendungsfall, den Sie im Sinn haben? Für Embedded etc gibt es Mikro-Rahmen, CF usw.
Kein Anwendungsfall, nur Interesse. –
Sie könnten diese interessant finden und zu lesen: .NET Internals and Native Compiling.
Beachten Sie, dass für die Reflexion zu arbeiten eine Menge Informationen über den Code immer präsentieren müssen.
Es gibt zwei aktive Projekte. Sie sind auf CIL-basierte Betriebssysteme ausgerichtet, aber die aktuelle Iteration von MOSA Compiler Framework läuft unter Windows (Komponententests usw.) und hat eine begrenzte Boot-Unterstützung. Cosmos hatte früher eine Windows-Architektur und ein paar Plugs, aber sie machen Windows nicht mehr - sie booten nur in eine CIL-Umgebung.
Kosmos ist viel weiter entlang, aber sie haben ziemlich genagelt Objekt Unterstützung. MOSA ist nur Bare-Metal (statische Methoden) für den Moment - obwohl es die "richtige" Art und gut Unit-getestet ist (und ich denke, schneller Fortschritte). Gib es noch ein paar Monate und geh dann zurück und sieh es dir an.
Niether hat im Moment einen JIT (was nicht wichtig ist, da Sie keinen wollen). Es ist alles kompiliert, um Code im Voraus zu verarbeiten.
Ich denke, Sie könnten auch ngen verwenden, wenn Sie es jippo könnten ... –