2009-08-24 5 views
13

Mi piacerebbe convertire la mia semplice pura console di rete .Net 2.0 in un exe portatile che potrei semplicemente mettere su una chiavetta USB e correre senza dovermi preoccupare se le librerie CLR e framework sono installate su una particolare macchina o meno.Come convertire un semplice progetto di console .Net in un exe portatile con Mono e mkbundle?

StackOverflow ha già some information sull'uso Mono e Mkbundle per la creazione di self-contained exes Windows da Net-progetti, ma quello che vorrei avere è un HOWTO compatta ma utile.

Quali sono i passaggi minimi per ottenere una portabilità da un semplice progetto C# Visual Studio?

risposta

16

Ho trovato un semplice how-to here, tuttavia, poiché non l'ho testato personalmente, non posso garantire i risultati. Come al solito YMMV.

Citazione dal l'articolo originale (si prega di seguire il filo sull'articolo originale così però):

Mkbundle: Gruppo Mono con le applicazioni

Vi siete mai chiesti il ​​motivo per cui si ha bisogno. NET Framework o Mono installato per eseguire il tuo programma? Beh, sarebbe molto più comodo se potessi distribuire le tue applicazioni senza fastidi dei tuoi clienti per installare framework aggiuntivi, non è così? Allora eccoci qua. Consente di raggruppare un'applicazione basata su .NET con Mono, quindi non è necessario Mono o .NET installato per eseguirlo.

Preparare un ambiente

In primo luogo è necessario installare più recente Mono e Cygwin. Installare Mono è molto semplice in modo da non rovinare nulla. Quando avvii l'installazione di Cygwin, vai a Vista completa, quindi includi 4 pacchetti aggiuntivi. Questi sono: gcc, mingw, mingw-zlib e zlib.

Ora è necessario un prompt dei comandi. Sia Mono che Cygwin creano scorciatoie per i prompt dei comandi sul desktop, ma è necessario combinarli in uno solo. Ecco un batch che lo fa per me. Potrebbe essere necessario modificarlo, ad esempio se si dispone di un'altra versione Mono.

Codice:

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 

fascio di un'applicazione con Mono

Così ora siamo in un prompt dei comandi, l'esecuzione di questo modo di Cygwin. Si noti che questo non è più un prompt di DOS e "dir" non funzionerà più. Per elencare i file usa il comando linux "ls". La cartella in cui stai navigando ora è simile a quella qui sotto. Arek è un nome utente. Codice:

C:\cygwin\home\Arek 

Sfoglia per questa cartella con il proprio esploratore. Ora copi 2 file in questa cartella. La prima è la tua applicazione exe e la seconda è il file Mono.dll (2MB) che puoi trovare nella tua cartella Mono. Codice:

C:\Program Files\Mono-2.4\bin 

Per qualche motivo l'intera procedura non funziona con i nomi di file lunghi, in modo da rinominare l'exe applicazione. Dovrebbe essere conforme a questa vecchia denominazione DOS 8.3.

Consente di tornare al prompt dei comandi. Hai bisogno di un solo comando per raggruppare la tua applicazione, ed ecco alcune spiegazioni.

mkbundle è un programma del pacchetto mono | -o Bundled1.exe specifica come verrà chiamato l'exe Mono-bundled | Winform1.exe dice che cosa sarà incluso, le librerie mono saranno comunque incluse | --deps è necessario anche se non sono sicuro di cosa faccia | -z sarà comprimere l'uscita exe molto

Codice:

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

Così ora avete ottenuto il vostro Bundled1.exe, che contiene la propria applicazione con Mono stessa. Non dovresti aver bisogno di Mono né di .NET per eseguirlo. Si noti che sarà di 4 MB o più in termini di dimensioni. Quei bundle exes non sono leggeri.