Konvertieren von .NET App in nativen x86-Code

Gibt es ein Programm vollständig geschrieben in C# und Ziele .NET Framework 2.0.
Gibt es eine Möglichkeit, ich könnte irgendwie kompilieren (übersetzen) verwaltete EXE-Datei in einem nativen so könnte es sein .NET-Agnostiker? Ich weiß, es gibt wahrscheinlich kommerzielle Produkte für diesen Zweck... aber Sie sind ein bisschen teuer.

Das problem ist, dass wir sind, um die Anwendung bereitstellen, die auf Computern mit Windows XP nicht .NET Framework installiert ist. Es gibt auch eine Anforderung, dass das Programm die Größe muss nicht größer als 500 kB (1 MB, maximum) für den Download aus dem web-server (jetzt die Größe ist 255Kb). Das ist, warum es gibt keinen Weg, wir könnten anfügen eine vollwertige .NET-FX (oder auch reduziert), um die heruntergeladene Programm-Datei.

Offensichtlich, es ist eine schreckliche software-engineering-Fehler sollten erkannt und vermieden werden früher und so konnten wir den Einsatz von nativen Technologien wie C++ statt.

Haben wir versucht, für jetzt Novell Mono - open-source-Implementierung von .NET Framework für Linux, MAC und Windows. Mono besteht aus C# - Compiler, IDE, runtime (CLR) und die Klassenbibliothek Baugruppen (wie System.dll und mscorlib.dll - sehr ähnlich .NET class library-Assemblys installiert werden, um GAC).
Was wir versucht zu tun ist, suchen Sie die CLR-Dateien und versenden diese zusammen mit unseren Programm-Datei und ein paar Baugruppen. Auf diese Weise kann das Programm aufgerufen werden, durch ausführen von "mono program.exe" (Eingabeaufforderung) auf dem computer eines Benutzers.
Zusätzlich zu den Unannehmlichkeiten einer solchen Nutzung für den Endbenutzer CLR-Dateien (mono.exe und mono.dll) stellte sich heraus, dass etwa 2,5 Mb insgesamt, das ist viel größer als die gewünschten 500 Kb oder sogar nur 1 Mb.

So, wir haben keine andere Wahl, als die Umsetzung unserer .NETTO-App zur nativen durch einen compiler, aber die Frage bleibt - welchen compiler sollten wir nutzen, und wo könnten wir eines finden...

Nun muss ich stolperte über eine Singularität OS-Projekt von Microsoft Research. Es ist ein open-source-Forschung OS, die in verwaltetem code geschrieben (zumindest teilweise). Die Singularität Betriebssystem enthält eine Bartok-compiler, der das OS nutzt, um zu übersetzen, ein verwaltetes Programm zur nativen (x86-32 bit). Es sollte angemerkt werden, dass Bartok kann nicht übersetzen alle Aspekte der .NET 2.0 zu einer nativen code, aber die meisten von Ihnen. Aber ich habe noch nicht gelernt, wie Sie mithilfe der Singularität...

Ich wäre echt dankbar wenn man mir einige nützliche Tipps und Ratschläge in Bezug auf das problem, Ihre eigenen Erfahrungen mit Singularität OS und Bartok-Compiler oder andere Ansätze das problem, dass ich das übersehen habe und die Möglichkeiten, es zu lösen.

Vielen Dank im Voraus!

Schließlich die Verwendung von Mono-Volle AOT-Funktion (on-Callum Rogers' Beratung) habe ich es geschafft zu produzieren program.exe.dll fehlt eine CLI header.
So sieht es bei mir aus wie eine native dll. Aber ich kann nicht herausfinden, wie zu konvertieren, dass die dll in die exe-Datei, oder machen es betriebsbereit ist.
Auch diese dll scheint nicht auszusetzen, Funktionen von Interesse, wie die main-Funktion.

Kommentar zu dem Problem
Sie werden versuchen, diese cross-Plattform -, oder entfernen Sie einfach die Abhängigkeiten von framework-Bibliotheken? Kommentarautor: Rowland Shaw
Ich versuche nur, um entfernen Sie die Abhängigkeiten .NET Framework, so dass es sein könnte, lief unter Windows XP w/o .NET FX installiert. Kommentarautor: Vlad
ein weiteres Duplikat: stackoverflow.com/questions/1188006/... Kommentarautor: Mauricio Scheffer
Das ist eine sehr gute Frage, daran zu denken, ich kann sogar hinzufügen, dass Windows 7 zum Lieferumfang .NET 3.5 SP1 installiert. Traurig, aber manchmal gibt es Fälle, wenn legacy-OS gefunden werden auf den Ziel-Computern mit älteren (am besten) oder gar keine (im schlimmsten Fall) .NET installiert. Kommentarautor: Vlad

InformationsquelleAutor der Frage Vlad | 2009-11-22

Schreibe einen Kommentar