Минимальное время выполнения для Mono для приложения Vb.net VS2005 в Windows?

Кто-нибудь знает или имеет ссылку на статью или пошаговое руководство, в котором рассказывается, как распространять приложение .net MONO с минимальной установкой? Полный пакет Mono составляет примерно 75 МБ, но я знаю, что это компилятор и библиотеки, которые мне не нужны.

Мне просто нужен минимум исполняемых файлов.

Какие файлы мне нужно будет распространять для простого приложения winforms Hello World?

Я пытался просто удалять файлы, пока не придумал что-то, что работало, но это работало только на машине, на которой был установлен Mono. Вот файлы, которые я пробовал

Я создал каталог для своего приложения. В этом каталоге я создал еще два каталога

\ bin \ lib \ моно \ 2.0

в \ mono \ lib \ mono \ 2.0 я помещаю файл mscorlib.dll в каталог \ bin, я помещаю следующее

Accessibility.dll, MyApp.exe (это базовый Hello World, который я делал в VS2005), iconv.dll, intl.dll, libglib-2.0-0.dll, libgthread-2.0-0.dll, Microsoft.VisualBasic.dll, mono.dll, mono.exe, Mono.Posix.dll, System.dll, System.Drawing.dll, System.Windows.Forms.dll

Затем из каталога \ bin я запустил «mono MyApp.exe», и он работал на моем компьютере с установленным Mono, но не на других.

Я бы предпочел решение xcopy, в котором фактическая установка не требуется, а нужны только файлы времени выполнения (например, при запуске с флэш-накопителя).

Обратите внимание, что это должно работать на компьютере с Windows, а не на Linux.


Я попытался запустить mkbundle2 (это приложение .net 2.0) и получил эту ошибку

C: \ Program Files \ Mono-2.0.1 \ bin> mkbundle2 C: \ Projects \ SingleExeTest \ bin \ Release \ SingleExeTest.exe --deps ОС: Источники Windows: 1 Автоматические зависимости: Истинное внедрение: C: \ Projects Встраивание \ SingleExeTest \ bin \ Release \ SingleExeTest.exe: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ mscorlib.dll встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Microsoft.VisualBasic.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.dll
встраивание: C: \ PROGRA ~ 1 \ MONO -2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Configuration.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Xml.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Security.dll, встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono. Security.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Windows.Forms.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Drawing.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Data.dll
встраивание: C: \ ПРОГРАММА ~ 1 \ МОНО-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.Data.Tds.dll встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.Transactions.dll встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.EnterpriseServices.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.WebBrowser.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Mono.Posix.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ Accessibility.dll Компиляция : as -o temp.o temp.s

Необработанное исключение: System.ComponentModel.Win32Exception: ApplicationName = 'sh', CommandLine = '- c "as -o temp.o temp.s"', CurrentDirectory = '' в System.Diagnostics.Process.Start_noshell (System.Diagnostics. ProcessStartIn fo startInfo, процесс System.Diagnostics.Process) [0x00000] в System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInf или startInfo, процесс System.Diagnostics.Process) [0x00000] в System.Diagnostics.Process.Start ( System.Diagnostics.ProcessStartInfo start Info) [0x00000] в MakeBundle.Execute (System.String cmdLine) [0x00000] в MakeBundle.GenerateBundles (файлы System.Collections.ArrayList) [0x00000] в MakeBundle.Main (System.String [] ar ) [0x00000]

C: \ Program Files \ Mono-2.0.1 \ bin>

Какие-либо предложения?


person user40711    schedule 25.11.2008    source источник


Ответы (2)


Вам необходимо использовать mkbundle для создания автономного исполняемого файла, который можно использовать в среде Windows. Конечным результатом является исполняемый файл, который содержит все нужные вам библиотеки Mono и ни одну из тех, которые вам не нужны.

Найдите заголовок пакетов на этой веб-странице. Это должно вас подтолкнуть. Обратите внимание, что это для чистых приложений Mono; он не обрабатывает внешние зависимости, такие как GTK.

РЕДАКТИРОВАНИЕ НАЧИНАЕТСЯ здесь

ПРИМЕЧАНИЕ. На странице руководства mkbundle ...

Windows

В системах Windows для работы mkbundle необходимо установить Unix-подобный набор инструментов. Вы можете использовать cygwin и установить gcc, gcc-mingw и как пакеты.

Обратите внимание, что пакет binutils содержит as.

cygwin можно найти здесь. (Я устанавливаю его на все свои машины с Windows и настоятельно рекомендую.) Обратите внимание, что cygwin требуется только на машине разработчика. Его не нужно развертывать на целевом объекте (ах).

person JPLemme    schedule 25.11.2008

Эй, похоже, у меня все заработало!

Мне пришлось установить Mono в c: \ mono вместо c: \ program files \ mono

Я думаю, ему не нравились пробелы

Спасибо за вашу помощь!

person user40711    schedule 25.11.2008