Вопрос по visual-studio, nuget, package-managers – Зачем нам нужен менеджер пакетов, такой как Nuget?

6

Я знаю, что диспетчер пакетов, такой как 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 автоматизирует все эти общие и утомительные задачи для пакета, а также его зависимостей. Это устраняет почти все проблемы включения сторонней библиотеки с открытым исходным кодом в проектисходное дерево

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

Вам это нужно, потому что он делает все эти вещи ..? Patrick
я не уверен, что тыВы спрашиваете, ожидали ли вы, что это сделает что-то еще? Betty
Некоторые младшие программисты могут найти комплекс троичных операторов, но это неЭто означает, что разработчики должны избегать его использования ... Patrick
IMO NuGet упрощает всю систему ссылок, а не делает ее более сложной. Ты уверен?s младшие программисты, кто проблема? Теперь я могу просто заставить их установить пакет, который волшебным образом решит проблему, как только онидо этого они могут узнатьмагия за этим, но этоИх гораздо меньше нужно помнить, чем устанавливать различные пакеты или вносить определенные изменения в конфигурацию. Betty
Я думаю, что проблема, которую хочет решить Негет, не имеет большого значения! и в некоторых ситуациях это добавляет уровень сложности в командной работе, особенно когда имеешь дело с младшими программистами. Navid

Ваш Ответ

2   ответа
3

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

Пример из жизни: Уменьшенный размер проекта имеет значение при развертывании проекта. Как если бы в решении было 500 МБ кода и 200 МБ размера пакетов, тогда дополнительные 200 МБ действительно стоили бы загружать проект каждый раз. Вместо загрузки конкретных dll-файлов нам нужно просто установить их ссылку в файле packages.config. ,

17

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

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

NuGet поощряет повторное использование компонентов, потому что вы косвенно полагаетесь на фактическиерелизы» (даже если предварительная версия), а не ветвящиеся источникивы можете избавиться от бинарных файлов, вздувающих ваши репозитории VCS (функция восстановления пакетов)это заставляет создателей пакета задуматься о том, как пакет будет потребляться, и оставляет их заниматься настройкой компонента во время установки пакета (кто знает, как лучше настроить пакет, чем создатели пакета?). Подумайте об ELMAH в качестве примера.Эффективная автоматизация создания и публикации пакетов в репозитории пакетов является формой непрерывной доставки (для программных компонентов). OctopusDeploy делает еще один шаг вперед и позволяет готовить к развертыванию целые веб-сайты.NuGet поощряет, а иногда и принуждает вас следовать некоторым лучшим практикам ALM. Например. у пакета есть версия, поэтому вы должны подумать о своей стратегии управления версиями (например, SemVer.org)NuGet интегрируется с SymbolSource.org (который также имеет редакцию Community для настройки своих собственных): это позволяет легко отлаживать выпущенные пакеты без необходимости постоянно отправлять эту информациюНаличие одного или нескольких репозиториев пакетов позволяет организации легко поддерживать матрицу зависимостей или даже создавать инвентаризацию лицензий OSS, которые используются несколькими проектами.NuGet уведомляет вас о доступных обновлениях пакетовСоздание пакетов заставляет людей задуматься об архитектуре компонентов (все зависимости также должны быть упакованы)Зависимости пакета автоматически разрешаются (так что вы можетезабыть любой)NuGet достаточно умен, чтобы добавлять перенаправления привязки сборки при необходимости

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

Ура, Ксавье

Благодарю. я думаю, что тезисы - это скрытые преимущества, которыеЯ скучал! Отличный пост. Navid

Похожие вопросы