Минимальное время выполнения для Mono для приложения Vb.net VS2005 в Windows? - PullRequest
2 голосов
/ 25 ноября 2008

Кто-нибудь знает или имеет ссылку на статью или пошаговое руководство, в котором рассказывается, как распространять приложение .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 - Операционная система: Источники 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 \ МОНО-2 ~ 1.1 \ Lib \ моно \ 2.0 \ Microsoft.VisualBasic.dll
встраивание: C: \ PROGRA ~ 1 \ MONO-2 ~ 1.1 \ lib \ mono \ 2.0 \ System.dll
вложение: C: \ PROGRA ~ 1 \ МОНО-2 ~ 1.1 \ Lib \ моно \ 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 \ МОНО-2 ~ 1.1 \ Lib \ моно \ 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: \ PROGRA ~ 1 \ MONO-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 \ МОНО-2 ~ 1.1 \ Lib \ моно \ 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 Компиляция: как -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 startInfo, System.Diagnostics.Process process) [0x00000] в System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInf или startInfo, System.Diagnostics.Process process) [0x00000] в System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo Информация начала) [0x00000] в MakeBundle.Execute (System.String cmdLine) [0x00000] в MakeBundle.GenerateBundles (Файлы System.Collections.ArrayList) [0x00000] в MakeBundle.Main (System.String [] args) [0x00000]

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

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 25 ноября 2008

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

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

РЕДАКТИРОВАТЬ НАЧИНАЕТСЯ ЗДЕСЬ

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

Windows

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

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

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

1 голос
/ 26 ноября 2008

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

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

Полагаю, пробелы не понравились

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

...