2009-08-24 9 views
13

Chciałbym przekonwertować moje proste proste narzędzie konsolowe .Net 2.0 do przenośnego aparatu, który mógłbym po prostu nałożyć na pamięć USB i uruchomić bez obaw, czy biblioteki CLR i biblioteki szkieletowe są zainstalowane na konkretnej maszynie, czy nie.Jak przekonwertować prosty projekt konsoli .Net na przenośny aparat exe z Mono i mkbundle?

Stackoverflow ma już some information na wykorzystaniu Mono i Mkbundle do tworzenia samodzielnych exe systemu Windows z .NET projektów, ale to, co chciałbym mieć to niewielki, ale przydatny HOWTO.

Jakie są minimalne kroki do osiągnięcia przenośności z prostego projektu Visual Studio C#?

Odpowiedz

16

Znalazłem prosty poradnik here, jednak nie przetestowałem go sam, nie gwarantuję wyników. Jak zwykle YMMV.

Cytat z oryginalnego artykułu (proszę śledzić wątek na oryginalnym artykułem, a także choć):

Mkbundle: pakiet Mono z aplikacjami

Czy kiedykolwiek zastanawiałeś się, dlaczego trzeba. NET Framework lub Mono zainstalowany, aby uruchomić swój program? Cóż, byłoby to o wiele bardziej przydatne, gdybyś mógł rozpowszechniać swoje aplikacje bez zmuszania klientów do instalowania dodatkowych frameworków, nieprawdaż? A więc jesteśmy. Pozwala pakiet aplikacji opartej na .NET z Mono, więc nie potrzebujesz Mono, lub .NET zainstalowany, aby go uruchomić.

Przygotować środowisko

najpierw trzeba zainstalować najnowszy Mono i Cygwin. Instalacja Mono jest bardzo prosta, więc nie można niczego zepsuć. Kiedy zaczniesz instalować Cygwin, wejdź w Pełny widok, a następnie dołącz 4 dodatkowe pakiety. Są to: gcc, mingw, mingw-zlib i zlib.

Teraz potrzebujesz wiersza polecenia. Zarówno Mono, jak i Cygwin tworzą skróty do poleceń na pulpicie, ale musisz je połączyć w jedno. Oto partia, która robi to za mnie. Być może będziesz musiał to zmienić, jeśli masz na przykład inną wersję Mono.

Kod:

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 

Bundle aplikację z Mono

Więc jesteśmy teraz w wierszu polecenia uruchomieniu tego trybu Cygwin. Zauważ, że nie jest to już monit DOS, a "dir" nie będzie już działać. Aby wyświetlić listę plików, użyj polecenia linux "ls". Folder, który przeglądasz, jest taki, jak ten poniżej. Arek to nazwa użytkownika. Kod:

C:\cygwin\home\Arek 

Przejdź do tego folderu z eksploratora. Teraz skopiuj 2 pliki do tego folderu. Pierwsza to aplikacja exe, a druga to plik Mono.dll (2 MB), który można znaleźć w folderze Mono. Kod:

C:\Program Files\Mono-2.4\bin 

Z jakiegoś powodu cała procedura nie działa z długich nazw plików, więc zmienić nazwę exe aplikacji. Powinien być zgodny z tym starym nazewnictwem systemu DOS 8.3.

Powróćmy do wiersza polecenia. Aby spakować aplikację, potrzebujesz tylko jednego polecenia, a tutaj jest trochę wyjaśnienia.

mkbundle to program w ramach pakietu Mono | -o Bundled1.exe określa, w jaki sposób exe z wiązaniami Mono otrzyma nazwę | Winform1.exe mówi, co zostanie dołączone, mimo to biblioteki Mono zostaną uwzględnione | --deps jest konieczne, chociaż nie jestem pewien, co robi | -z będzie kompresować wyjście exe o wiele

Kod:

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

Więc teraz masz swoją Bundled1.exe, który zawiera własną aplikację wraz z samą Mono. Nie powinieneś używać Mono ani .NET, aby go uruchomić. Zauważ, że będzie to 4 MB lub więcej. Te powiązane exe nie są lekkie.

Powiązane problemy