Как преобразовать простой консольный проект .Net в переносимый exe с Mono и mkbundle?

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

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

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

Ответы на вопрос(1)

Решение Вопроса

Я нашел простую инструкциюВотОднако, поскольку я не проверял это сам, я не могу гарантировать результаты. Как обычно 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, и "реж» победил'больше не работает. Для просмотра файлов используйте команду 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 или больше в размере. Эти пакеты не легкие.

Ваш ответ на вопрос