Зачем упаковывать пакеты самостоятельно

Разработка на C# под linux
Какие бывают зависимости и как с ними бороться
скачать готовый nuget пакет я понимаю для чего, а зачем нам его упаковывать?
для нугета в monodevelop?

это всё для того, чтобы достичь цель "всё собирается из исходников"
а не "скачивается в бинарном виде с nuget.org"
т.е. да, для Monodevelop. упаковывать для того, чтобы устанавливать гарантированно собранное из исходников, а не скачивать неясно с какими закладками скомпилированные бинарники

есть github. там есть разные проекты. в проектах используется три вида зависимостей:
1) зависимость через GAC (assembly reference with strong name)
2) зависимость через packages.config (package reference)
3) зависимость через .gitmodules и HintPath (project reference)

по-хорошему надо их все перед сролливанием исходников в тарболл заменить на зависимости через GAC
но не все будут пользоваться нашими тарболлами. Кто-то будет собирать прямо из репозитория, поэтому нужно чтобы при использовании packages.config пакеты находились

в генте мы не имеем права рассчитывать на nuget.org и должны создать локальный репозиторий пакетов
будем собирать пакеты и помещать в этот локальный репозиторий (если у пакета установлен USE=nupkg)
а nuget надо отконфигурировать, чтобы искал в локальном репозитории (сейчас это не сделано в билде, только у меня на машине локально)
То есть, упаковка в .nupkg нужна для тех, кто ленится пропатчить проект и заменить зависимости от других пакетов по типу "через packages.config" на зависимости по типу "через GAC"
GAC - это очень гентувейно. Один слот = одна запись в GAC