Как преобразовать простой консольный проект .Net в переносимый exe с Mono и mkbundle? - PullRequest
14 голосов
/ 24 августа 2009

Я хотел бы преобразовать мою простую чистую консольную утилиту .Net 2.0 в портативную исполняемую программу, которую я мог бы просто положить на USB-накопитель и запустить, не беспокоясь о том, установлены ли библиотеки CLR и framework на конкретной машине или нет. ,

Stackoverflow уже имеет некоторую информацию об использовании Mono и Mkbundle для создания автономных Windows-файлов из .Net-проектов, но я бы хотел есть компактный, но полезный HOWTO.

Каковы минимальные шаги для достижения переносимости из простого проекта C # Visual Studio?

1 Ответ

16 голосов
/ 24 августа 2009

Я нашел простое руководство по здесь , однако, поскольку я сам не проверял его, я не могу гарантировать результаты. Как обычно YMMV.

Цитата из оригинальной статьи (хотя, пожалуйста, следуйте ветке на оригинальной статье):

Mkbundle: пакет Mono с вашими приложениями

Вы когда-нибудь задумывались, зачем вам нужна .NET Framework или Mono для запуска вашей программы? Что ж, было бы гораздо удобнее, если бы вы могли распространять свои приложения, не раздражая своих клиентов для установки дополнительных платформ, не так ли? Итак, мы здесь. Позволяет связать приложение на основе .NET с Mono, поэтому вам не нужно устанавливать Mono или .NET для его запуска.

Подготовка среды

Сначала вам нужно установить новейшие Mono и Cygwin. Установка Mono очень проста, поэтому вы ничего не можете испортить. Когда вы начнете устанавливать Cygwin, перейдите в полноэкранный режим, затем, пожалуйста, включите 4 дополнительных пакета. Это gcc, mingw, mingw-zlib и zlib.

Теперь вам нужна командная строка. Как Mono, так и Cygwin создают ярлыки для командных подсказок на рабочем столе, но вам нужно объединить их в одно. Вот партия, которая делает это для меня. Возможно, вам придется изменить его, если у вас есть, например, другая версия Mono.

Код:

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

Пакет приложения с Mono

Итак, мы находимся в командной строке и запускаем этот режим Cygwin. Обратите внимание, что это больше не приглашение DOS, и «dir» больше не будет работать. Для просмотра файлов используйте команду linux "ls". Папка, которую вы сейчас просматриваете, похожа на папку ниже. Arek - это имя пользователя. Код:

C:\cygwin\home\Arek

Перейдите в эту папку с помощью проводника. Теперь вы копируете 2 файла в эту папку. Первый - это приложение exe, а второй - файл Mono.dll (2 МБ), который вы можете найти в папке Mono. Код:

C:\Program Files\Mono-2.4\bin

По какой-то причине вся процедура не работает с длинными именами файлов, поэтому переименуйте ваше приложение в exe. Он должен соответствовать этому старому DOS 8.3.

Вернемся к командной строке. Вам нужна только 1 команда для объединения вашего приложения, и вот несколько объяснений.

mkbundle - программа в пакете Mono | -o Bundled1.exe указывает, как будет назван моно-пакет exe | Winform1.exe говорит, что будет включено, библиотеки Mono будут включены в любом случае | --deps необходим, хотя я не уверен, что он делает | -z много сжнет выходной файл exe

Код:

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

Итак, вы получили Bundled1.exe, который содержит собственное приложение вместе с самим Mono Вам не нужно ни Mono, ни .NET для его запуска. Обратите внимание, что это будет 4MB или больше в размере. Эти пакеты не легкие.

...