Ответ 1
Я нашел простой способ здесь, однако, поскольку я сам его не тестировал, я не могу гарантировать результаты. Как обычно, YMMV.
Цитата из оригинальной статьи (пожалуйста, следуйте за ней также в оригинальной статье):
Mkbundle: пакет Моно с вашими приложениями
Вы когда-нибудь задумывались, зачем вам нужна .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 файла в эту папку. 1st - ваше приложение exe, а 2nd - файл Mono.dll(2MB), который вы можете найти в своей папке Mono. Код:
C:\Program Files\Mono-2.4\bin
По какой-то причине вся процедура не работает с длинными именами файлов, поэтому переименуйте приложение exe. Он должен соответствовать этому старым именам DOS 8.3.
Вернется в командную строку. Вам нужно всего лишь 1 команда, чтобы связать ваше приложение, и вот некоторые объяснения.
mkbundle - это программа в пакете Mono | -o Bundled1.exe указывает, как будет указываться Mono-bundled exe | Winform1.exe говорит, что будет включено, библиотеки Mono будут включены в любом случае | --deps необходимо, хотя я не уверен, что он делает | -z будет сильно сжимать выходной поток
код:
mkbundle -o Bundled1.exe Winform1.exe --deps -z
Итак, теперь вы получили свой Bundled1.exe, который содержит ваше собственное приложение вместе с самим Mono. Для его запуска не требуется Mono или .NET. Обратите внимание, что размер будет 4 МБ или более. Те, что связаны с exes, не являются легкими.