Зачем нам нужен менеджер пакетов, такой как 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-файлы нам нужно просто установить их ссылку в пакетах.конфигурационный файл.