
Эффективное применение NuGet. Часть 2: свои пакеты и декомпозиция монореп
xtraroman 6 минут назад Эффективное применение NuGet. Часть 2: свои пакеты и декомпозиция монореп Средний 12 мин 65 Блог компании ЭРЕМЕКС .NET * Туториал В первой части мы разобрались с централизованным управлением...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: xtraroman 6 минут назад Эффективное применение NuGet. Часть 2: свои пакеты и декомпозиция монореп Средний 12 мин 65 Блог компании ЭРЕМЕКС . NET * Туториал В первой части мы разобрались с централизованным управлением версиями, локальными кешами NuGet и подняли приватную галерею на BaGet.
Тогда мы выступали в роли потребителей пакетов. Теперь поменяемся ролями и научимся их производить. Эта статья рассказывает, как вынести общий код в отдельный NuGet-пакет, как сделать его удобным для коллег и как с помощью пакетов разделить гигантскую монорепу на части, которые собираются за вменяемое время.
Технические детали
Зачем делать пакет, если есть ProjectReference? Проще всего переиспользовать код между проектами одного решения через ссылку на проект: Пока всё живёт в одном солюшене (. sln) и собирается одной командой, это идеальный вариант.
Версии и публикация не нужны, изменения видны мгновенно. Проблемы начинаются, когда общий код нужен в другом репозитории. Протаскивать ProjectReference через границы репозиториев неудобно: появляются git-сабмодули, длинные относительные пути и сборки, которые работают только на конкретной машине.
Именно здесь пригодится NuGet-пакет: он фиксирует версию, упаковывает скомпилированные сборки и попадает через галерею в любой проект, который его запросит. Простое правило: внутри одного солюшена подходит ProjectReference, а между репозиториями нужен пакет. Создаём первый пакетЧтобы собрать пакет из сборки, используется команда dotnet pack.
Отраслевые последствия
Возьмём обычную библиотеку: net9. 0 Acme Team Общие утилиты для проектов Acme. Если выполнить команду,dotnet pack -c Release в bin/Release появится файл Acme.
Это и есть пакет: обычный zip-архив с вашими сборками и метаданными. Его можно отправить в приватную галерею командой:dotnet nuget push --source $NUGET_SERVER --api-key $NUGET_SERVER_KEY bin/Release/Acme. nupkg Если не хочется каждый раз вызывать pack вручную, включите автоматическую упаковку при сборке:true Метаданные, которые стоит заполнитьМинимальный пакет соберётся, но работать с ним коллегам неудобно: непонятно, кто автор, что внутри и куда обращаться с вопросами.
Стоит потратить несколько минут и заполнить метаданные, это окупится: Acme. 0 roman;ivan ЭРЕМЕКС Хелперы для логирования, валидации и работы с конфигурацией. acme;utils;internal git README.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





