2009-08-24 3 views
13

Ich möchte mein einfaches reines .Net 2.0 Konsolen-Dienstprogramm in eine portable exe umwandeln, die ich einfach auf einen USB-Stick legen und ausführen kann, ohne mich darum kümmern zu müssen, ob die CLR- und Framework-Bibliotheken auf einem bestimmten Rechner installiert sind.Wie konvertiert man ein einfaches .Net-Konsolenprojekt a in eine portable exe mit Mono und mkbundle?

Stackoverflow hat bereits some information zur Verwendung von Mono und Mkbundle für die Erstellung von eigenständigen Windows EXE-Dateien von .NET-Projekten, aber was ich möchte, ist haben ein kompaktes, aber nützlich HowTo.

Was sind die minimalen Schritte zum Erreichen einer Portabilität von einem einfachen C# Visual Studio-Projekt?

Antwort

16

Ich habe ein einfaches How-to gefunden here, jedoch, wie ich es nicht selbst getestet habe, kann ich keine Ergebnisse garantieren. Wie immer YMMV.

Mkbundle:: wonder bündeln Mono mit Ihren Anwendungen

Haben Sie jemals, warum Sie benötigen

Zitat aus dem Original-Artikel (bitte auch wenn das Gewinde auf dem Original-Artikel folgen). NET Framework oder Mono installiert, um Ihr Programm zu starten? Nun, es wäre viel praktischer, wenn Sie Ihre Anwendungen verteilen könnten, ohne Ihre Clients dazu zu bringen, zusätzliche Frameworks zu installieren, oder? So hier sind wir. Lassen Sie uns eine .NET-basierte Anwendung mit Mono bündeln, so dass Sie Mono oder .NET zur Ausführung nicht benötigen.

Bereiten Sie eine Umgebung

Zuerst müssen Sie neuesten Mono und Cygwin installieren. Die Installation von Mono ist sehr einfach, so dass Sie nichts vermasseln können. Wenn Sie mit der Installation von Cygwin beginnen, gehen Sie in die Vollansicht und fügen Sie dann 4 zusätzliche Pakete hinzu. Diese sind: gcc, mingw, mingw-zlib und zlib.

Jetzt benötigen Sie eine Eingabeaufforderung. Sowohl Mono als auch Cygwin erstellen Verknüpfungen für Eingabeaufforderungen auf Ihrem Desktop, aber Sie müssen sie zu einem kombinieren. Hier ist ein Stapel, der es für mich tut. Sie müssen es möglicherweise ändern, wenn Sie beispielsweise eine andere Mono-Version haben.

Code:

echo Mono version 2.4 Build 6 
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH 
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH% 

chdir C:\cygwin\bin 
bash --login -i 

eine Anwendung Bundle mit Mono

So sind wir jetzt in einer Eingabeaufforderung diese Cygwin-Modus ausgeführt wird. Beachten Sie, dass dies keine DOS-Eingabeaufforderung mehr ist und "dir" nicht mehr funktioniert. Um Dateien aufzulisten benutze den Linux Befehl "ls". Der Ordner, den Sie gerade durchsuchen, ist wie der folgende. Arek ist ein Benutzername. Code:

C:\cygwin\home\Arek 

Wechseln Sie zu diesem Ordner mit Ihrem Explorer. Jetzt kopierst du 2 Dateien in diesen Ordner. 1. ist Ihre Anwendung exe und 2. ist die Datei Mono.dll (2MB), die Sie in Ihrem Mono-Ordner finden können. Code:

C:\Program Files\Mono-2.4\bin 

Aus irgendeinem Grund die ganze Prozedur mit langen Dateinamen nicht funktioniert, so dass Ihre Anwendung exe umbenennen. Es sollte mit dieser alten DOS 8.3 Benennung übereinstimmen.

Lets zurück zur Eingabeaufforderung. Sie benötigen nur 1 Befehl, um Ihre Anwendung zu bündeln, und hier ist eine Erklärung.

mkbundle ist ein Programm im Mono-Paket | -o Bundled1.exe gibt an, wie die Mono-gebündelte EXE mit | benannt wird Winform1.exe sagt, was enthalten sein wird, Mono-Bibliotheken werden trotzdem enthalten | --Deps ist notwendig, obwohl ich nicht sicher bin, was es tut | -z wird viel

-Code die Ausgabe exe komprimieren:

mkbundle -o Bundled1.exe Winform1.exe --deps -z 

So, jetzt Sie Ihre Bundled1.exe bekam, die zusammen mit Mono selbst Ihre eigene App enthält. Sie sollten Mono oder .NET nicht benötigen, um es auszuführen. Beachten Sie, dass die Größe 4 MB oder mehr beträgt. Diese gebündelten Exes sind nicht leicht.

Verwandte Themen