2015-09-10 4 views
1

Я скомпилировал моно-время выполнения из источника на экземпляре Amazon Linux. После компиляции каталоги «lib» и «bin» составляют 320 МБ. Я хотел бы сделать это как можно меньше. Что (если угодно) можно удалить, чтобы сохранить как можно больше места.Уменьшить размер среды выполнения Mono

+1

320MB? Этот вопрос действительно о Хамарине? –

+0

Ребята из Xamarin много разбираются в моно. Так что потенциально у них появятся подсказки. – Brandon

ответ

0

Во-первых, я хотел бы начать здесь:

How to make a smaller Mono install/Small Footprint

Для себя:

Я не раздеваться двоичные файлы или «повторно ссылку» Ассамблей, но я настроить с кучей опции, выключенные, конечно, с версией версии 4.x для вашего обычного пробега могут отличаться:

Мое использование дискового пространства ОС OS-X/Linux для монодиска составляет около 174 МБ, при этом около 60 МБ в пределах GAC (~~/Библиотека/моно/GAC). Если вы не используете GAC для разрешения сборок, чего у меня нет, я оставляю около 110 МБ для полной версии 4.5. Есть много пунктов в рамках, которые я лично никогда не использовать, но я не нашел, что стоит создать список удаления для того, чтобы попытаться спасти другого 10-30MB ...

FYI:

Мой «маленький 'OS-X настроить:

./autogen.sh \ 
    --with-tls=posix \ 
    --enable-nls=no \ 
    --with-mcs-docs=no \ 
    --with-profile2=no \ 
    --with-profile4=no \ 
    --with-profile4_5=yes \ 
    --with-moonlight=no \ 
    --host=i386-apple-darwin10 \ 
    --with-glib=embedded \ 
    --prefix=${PlayInstallPath} 

Мой 'маленький' Linux настроить:

./autogen.sh \ 
    --with-mcs-docs=no \ 
    --with-profile2=no \ 
    --with-profile4=no \ 
    --with-profile4_5=yes \ 
    --with-moonlight=no \ 
    --prefix=${PlayInstallPath} 

Обновления для комментария:

Могу ли я избавиться от каталога 2.0 - я всегда буду ориентироваться на рамки 4.5 . Как я могу использовать только каталог 4.5 и избавиться от ПКК? Могу ли я просто скопировать соответствующие DLL?

Запуск без GAC:

Если посмотреть на приложении, как Xamarin Студия/Mono Разработки, он использует MSBuild для решения мест сборки и не GAC. GAC действительно не нужен, и в новой модели развертывания MS .Net Core все сборки .Net, необходимые для приложения/службы/Docker/etc, просто скопированы в один и тот же каталог развертывания, проблемы с версиями не являются проблемой, поскольку вы можете свернуть назад изменения каталога, чтобы вернуться к предыдущей сборке или просто sym-link в другой каталог, чтобы перейти на новую версию и т. д., если вы делаете это для постановки/версии производства, поговорите с DevOps, чтобы координировать, кто/что /когда где...

В Mono, вы можете использовать MONO_PATH пропустить GAC и перейти непосредственно к Lib каталога, в то время как это НЕ лучшая практика, она работает в нашей среды для того, что мы делаем (ваш километраж будет варьироваться в зависимости от типа приложения), но читать следующие Моно ссылки, чтобы понять, за и против, и как вы должны делать это:

http://www.mono-project.com/archived/best_practices/#monopath

и:

http://www.mono-project.com/docs/getting-started/application-deployment/

Что касается каталога net_2_0, я никогда не получаю его, поскольку я отключу этот профиль через «--with-profile2 = no» на этапе autogen/configure.

+0

Большое спасибо за информацию. Это полезно. Могу ли я избавиться от каталога 2.0 - я всегда буду ориентироваться на рамки 4.5. Как мне использовать только каталог 4.5 и избавиться от GAC? Могу ли я просто скопировать соответствующие DLL? – Brandon

+0

Спасибо - это отвечает всем! – Brandon

Смежные вопросы