2009-03-23 12 views
17

Ich werde eine kleine Desktop-App für einen Client schreiben, der WinXP-Maschinen hat und das .NET-Framework nicht installiert (zumindest nicht für mich).Statische Kompilierung in der .NET-Welt

Also meine Auswahl beschränkt sich entweder auf C++ oder VB6, von denen keiner gut klingt. Ich erinnere mich an den Tag zurück, an dem Mono einen statischen Compiler entwickelt hat, aber vor kurzem war das einzige, was ich finden konnte, Miguel de Icazas Eintrag in einer statischen Kompilation für eine Spiel-Engine zum Ausführen der App auf dem iPhone - nicht was Ich hatte im Sinn.

Gibt es irgendwelche Produkte, kostenlos oder kommerziell, mit denen ich meine .net 3.5 winform App statisch kompilieren kann?

Dank

+2

Ich frage mich, wer diese Frage abstimmen würde. Statisch wäre die Laufzeit inklusive groß. –

+1

Es scheint, als würden einige Fragen aus keinem offensichtlichen Grund abgelehnt, die Leute, die das tun, hinterlassen keinen Kommentar, so dass wir uns die Köpfe kratzen. –

+0

Was ist los mit der Installation von .NET für sie? Fügen Sie es in das Installationsprogramm ein. –

Antwort

11

können Sie versuchen, Remotesoft Salamander.

Es ist zu verwenden, genau das, was Sie wollen.

+3

... für einen sehr großen Overprice ... –

8

Mono hat seine Unterstützung für die Ahead-of-Time-Kompilierung (AOT) bis zu dem Punkt erheblich verbessert, an dem Sie praktisch alle CIL-Anwendungen statisch kompilieren können .

Ob das Ganze eine gute Idee ist, hängt ganz von der Anwendung und Ihren Einschränkungen ab.

Zum Beispiel liefert Novell nun MonoTouch, eine CLI-Implementierung, die vollständig AOT kompiliert und verlinkt ist, um .Net-Anwendungen (nicht nur Spiele) auf dem iPhone gegen das CocoaTouch-Framework laufen zu lassen.

Dieselben AOT-Techniken können verwendet werden, um eine Winforms-Anwendung zu kompilieren, für die weder die .NET- noch die Mono-Laufzeitumgebung erforderlich ist. Es gibt eine Menge von Performance-Kompromissen (sowohl positive als auch negative) in Bezug auf AOT, so dass ich ohne die Due Diligence nicht vorwärts gehen würde.


Edit:

Als Antwort auf John Saunders' Fragen "warum nicht einfach es für sie installieren?". Das bringt einen Grund, warum Sie AOT Kompilierung benötigen. Bootstrappers.

Um alles zu installieren, müssen Sie eine ausführbare Datei ausführen. Sie können entweder eine MSI verteilen (die implizit msiexec.exe startet) oder Sie können eine Exe verteilen. MSI, obwohl funktional, ist eine ziemlich schreckliche Entwicklererfahrung. So können Sie Ihren Bootstrapper mit .NET erstellen (AOT kompiliert die Laufzeitabhängigkeit beseitigen), die vor der Installation Ihrer App die notwendigen Voraussetzungen (wie z. B. .NET) installiert.

Darüber hinaus müssen einige Unternehmen möglicherweise herunterladbare ausführbare Dateien bereitstellen, bei denen Benutzer nichts installieren müssen (still oder anderweitig).

Noch etwas: Die Installation von .NET erfordert Administratorrechte. AOT kann Ihnen erlauben, diese Anforderung für Ihre Anwendung zu umgehen.

Noch einmal, ob davon eine gute Idee ist, hängt vollständig von der Anwendung und von Ihren Einschränkungen ab.

+1

+1 Ihre Antwort war sehr konstruktiv! –

Verwandte Themen