Зачем нам нужен менеджер пакетов, такой как Nuget?

Я знаю, что менеджер пакетов, такой как NuGet, помогает нам, когда мы хотим использовать сторонние компоненты.

Из Страницы NuGet Codeplex:

NuGet-это бесплатное управление пакетами с открытым исходным кодом для разработчиков система для платформы .NET с целью упрощения процесса включение сторонних библиотек в .Net приложения в развитие.

существует большое количество полезных сторонних библиотек с открытым исходным кодом там Платформа .NET, но для тех, кто не знаком с OSS экосистемы, это может быть боль, чтобы вытащить эти библиотеки в проект.

давайте возьмем ELMAH в качестве примера. Это прекрасная утилита регистрации ошибок который не имеет зависимостей от других библиотек, но по-прежнему актуальна интегрироваться в проект. Это шаги, которые он принимает:

Find ELMAH
Download the correct zip package.
“Unblock” the package.
Verify its hash against the one provided by the hosting environment.
Unzip the package contents into a specific location in the solution.
Add an assembly reference to the assembly.
Update web.config with the correct settings which a developer needs to search for. 

а это для библиотеки, которая не имеет зависимостей. Представить, как это на NHibernate.Linq, который имеет несколько зависимостей, каждая из которых нуждается в аналогичные действия. Мы можем сделать гораздо лучше!

NuGet автоматизирует все эти общие и утомительные задачи для пакета как а также его зависимости. Он устраняет почти все проблемы включение сторонней библиотеки с открытым исходным кодом в проект дерево источников

эти шаги являются простыми задачами, которые мы делаем, когда мы хотим создать проект. его только для автоматизации добавления сторонних компонентов и декретов вероятность ошибки в конфигурационные файлы? или у него гораздо больше обязанностей !?

2 ответов


Это значение скрыто в открытом: пакет менеджер например, NuGet помогает вам работать с зависимостями программного обеспечения с помощью автоматизации. Многие предполагают, что он предназначен только для компонентов с открытым исходным кодом или сторонних компонентов, но вы также можете использовать его для своих собственных внутренних пакетов.

самое замечательное в NuGet (чтобы назвать несколько преимуществ):

  • NuGet поощряет повторное использование компонентов, поскольку вы неявно полагаетесь на фактические " выпуски" (даже если pre-release), вместо ветвящихся источников
  • вы можете избавиться от двоичных файлов, раздувающих ваши репозитории VCS (функция восстановления пакета)
  • это заставляет создателей пакетов думать о том, как будет потребляться пакет, и оставляет их заниматься конфигурацией компонента во время установки пакета (кто лучше знает, как настроить пакет, чем создатели пакетов?). Подумайте об ЭЛЬМАХ в качестве примера.
  • автоматизация создания пакетов и публикация в репозитории пакетов фактически является формой непрерывной доставки (для программных компонентов). OctopusDeploy даже делает шаг вперед и позволяет упаковывать целые веб-сайты, готовые к развертыванию.
  • NuGet поощряет и иногда принуждает вас следовать некоторым лучшим практикам ALM. Например. пакет имеет версию, поэтому вам нужно подумать о своей стратегии управления версиями (например, SemVer.org)
  • NuGet интегрируется с SymbolSource.org (который также имеет издание сообщества настроить свой собственный): это позволяет легко отлаживать выпущенные пакеты без необходимости отправлять эту информацию все время
  • наличие одного или нескольких репозиториев пакетов позволяет организации легко поддерживать матрицу зависимостей или даже создавать инвентарь лицензий OSS, которые используются несколькими проектами
  • NuGet уведомляет вас о доступных обновлениях пакета
  • создание пакетов заставляет людей думать об архитектуре компонентов (все зависимости должны быть упаковано также)
  • зависимости пакета автоматически разрешаются (поэтому вы не можете их забыть)
  • NuGet достаточно умен, чтобы добавить перенаправление привязки сборки, когда это необходимо

приведенный выше список не является исчерпывающим, но я надеюсь, что я охватил ключевые преимущества в этом ответе. Я уверен, что есть еще.

Ура, Ксавье!--3-->


причина использовать NuGet для вам не нужно грузить все библиотеки в вашем проекте, уменьшая размер проекта. С помощью NuGet Power Tools, указав версии пакета в пакеты.config файл, вы сможете загрузить все необходимые библиотеки при первом запуске проекта.

Live Exapmle: уменьшение размера проекта имеет значение при развертывании проекта.Как если решение имейте 500Mb кода и 200Mb размер пакетов, то дополнительные 200mb действительно стоимость загрузки проекта каждый раз.Вместо загрузки бетона dll-файлы нам нужно просто установить их ссылку в пакетах.конфигурационный файл.