Es gibt ein vollständig in C# geschriebenes Programm, das auf .NET Framework 2.0 abzielt. Gibt es einen Weg, wie ich Managed EXE irgendwie zu einem nativen kompilieren konnte, damit es .NET-agnostisch sein konnte? Ich weiß, dass es wahrscheinlich kommerzielle Produkte für diesen Zweck gibt ... aber sie sind ein bisschen teuer.Konvertieren von .NET App in nativen x86-Code
Das Problem ist, dass wir das Programm auf Computern mit Windows XP ohne .NET Framework installieren. Es gibt auch eine Anforderung, dass die Programmgröße 500Kb (maximal 1 MB) nicht überschreiten darf, da es vom Webserver heruntergeladen wird (jetzt ist die Größe 255 KB). Aus diesem Grund können wir keine vollwertigen .NET-FX (oder auch nur eine reduzierte) an die heruntergeladene Programmdatei anhängen.
Offensichtlich ist es ein schrecklicher Softwareentwicklungsfehler, der früher erkannt und vermieden werden sollte, damit wir native Technologien wie C++ stattdessen verwenden konnten.
Wir haben jetzt versucht, Novel Mono - eine Open-Source-Implementierung von .NET Framework für Linux, MAC und Windows. Mono besteht aus C# -Compiler-, IDE-, Runtime- (CLR) und Klassenbibliotheksassemblys (wie System.dll und mscorlib.dll - ähnlich wie die in GAC installierten .NET-Klassenbibliotheksassemblys). Wir haben versucht, CLR-Dateien zu finden und diese zusammen mit unserer Programmdatei und einigen Assemblys zu versenden. Auf diese Weise kann das Programm aufgerufen werden, indem "mono program.exe" (Eingabeaufforderung) auf dem Computer eines Benutzers ausgeführt wird. Zusätzlich zu den Unannehmlichkeiten einer solchen Verwendung für die Endbenutzer CLR-Dateien (mono.exe und mono.dll) entpuppte sich insgesamt etwa 2,5 Mb, die viel größer ist als die gewünschten 500 Kb oder sogar 1 Mb.
So haben wir keine andere Wahl, als unser .NET-App zu einem nativen eines von einem Compiler zu übersetzen, aber es bleibt die Frage - was Compiler sollten wir verwenden und wo könnten wir einen finden ...
Jetzt bin ich auf ein Singularity OS Project von Microsoft Research gestoßen. Es ist ein Open-Source-Betriebssystem, das in verwaltetem Code (zumindest teilweise) geschrieben ist. Das Singularity-Betriebssystem enthält einen Bartok-Compiler, den das Betriebssystem verwendet, um ein verwaltetes Programm in ein natives zu konvertieren (x86 32 Bit). Es sollte angemerkt werden, dass Bartok nicht alle Aspekte von .NET 2.0 in einen systemeigenen Code übersetzen kann, aber die meisten davon. Allerdings habe ich noch nicht gelernt, wie man die Singularity verwendet ...
Ich wäre Ihnen sehr dankbar, wenn Sie mir einige nützliche Tipps und Ratschläge zu dem Problem geben könnten, Ihre eigenen Erfahrungen mit Singularity OS und Bartok Compiler oder eine andere Annäherung an das Problem, das ich übersehen habe und Wege, es zu lösen.
Vielen Dank im Voraus!
Schließlich Monos Full AOT-Funktion (auf Callum Rogers Ratschlag) Ich habe es geschafft, eine Programm.exe.dll, die eine CLI-Header fehlt. So sieht es für mich wie eine native DLL aus. Jedoch kann ich nicht herausfinden, wie man diese DLL in exe umwandelt oder es betriebsbereit macht. Auch diese DLL scheint keine Funktionen von Interesse wie Hauptfunktion zu offenbaren.
les Betrogene: http://stackoverflow.com/questions/45702/is-there-some-way-to-compile-a-net-application-to-native- Code –
Versuchen Sie, diese plattformübergreifende Plattform zu erstellen, oder entfernen Sie einfach die Abhängigkeiten von Framework-Bibliotheken? –
Ich versuche nur, die Abhängigkeiten von .NET Framework zu entfernen, damit es unter Windows XP ohne .NET FX ausgeführt werden kann. – Vlad