Проверка пакетов nuget

В моем приложении есть несколько ссылок на пакеты nuget. Должен ли я вернуть папку packages также в систему управления версиями? Я намерен сделать исходный код доступным для других разработчиков и поддерживать стабильную версию ссылок. Я хочу получить конкретную версию надежных dll из системы управления версиями на определенную дату, если я обновил проект последними обновлениями nuget и приложение перестало работать.

Или мне создать папку library и закинуть dll из папки packages и проверить то, в чем я раньше делал? И управлять папкой packages только локально?


person wonderful world    schedule 23.08.2014    source источник
comment
Я задавал себе этот вопрос несколько дней назад. И я нашел эту страницу: Использование NuGet без фиксации пакетов в системе управления версиями Возможно, это поможет и вам.   -  person Callidus    schedule 24.08.2014


Ответы (2)


Вы должны взвесить все за и против наличия пакетов NuGet в системе контроля версий или нет, и решить для себя. Выбор полностью за вами.

Я хочу получить конкретную версию надежных dll из системы управления версиями на определенную дату, если я обновил проект последними обновлениями nuget и приложение перестало работать.

Это поддерживается любым подходом. Если вы не зарегистрируете пакеты NuGet, вам следует зафиксировать файл packages.config для каждого проекта. В этом файле записывается версия используемых пакетов NuGet. Таким образом, вы можете проверить старую версию своего исходного кода, и она будет использовать старую версию пакетов NuGet. Пакеты NuGet на nuget.org никогда не удаляются.

На сайте NuGet есть документация о причинах исключения пакетов из исходный контроль, который я цитировал здесь:

Распределенные системы управления версиями (DCVS) включают каждую версию каждого файла в репозитории, а часто обновляемые двоичные файлы могут привести к значительному раздуванию репозитория и увеличению времени, необходимого для клонирования репозитория. С пакетами, включенными в репозиторий, участники группы могут добавлять ссылки непосредственно на содержимое пакетов на диске, а не ссылаться на пакеты через NuGet. Становится сложнее «очистить» ваше решение от любых неиспользуемых папок пакетов, так как вам нужно убедиться, что вы не удаляете какие-либо папки пакетов, которые все еще используются.

Проблемы с отсутствием проверки пакетов NuGet в системе управления версиями могут возникнуть с серверами сборки или с ограниченным сетевым подключением. На сервере сборки вам потребуется доступ к Интернету или предоставление локального каталога с пакетами NuGet, используемыми проектом. Также вам нужно будет запустить NuGet.exe restore перед сборкой проекта или использовать восстановление пакета на основе MSBuild (которое устарело командой NuGet). Обратите внимание: если вы используете последнюю версию NuGet с Visual Studio, пакеты NuGet автоматически восстанавливаются при сборке проекта. Другие IDE имеют аналогичную функцию или, по крайней мере, способ восстановления пакетов без использования NuGet.exe из командной строки.

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

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

Подходы к рассмотрению:

  1. Проверьте каталог пакетов в системе контроля версий.
  2. Не проверяйте каталог пакетов в системе управления версиями и полагайтесь на восстановление пакетов NuGet.
  3. Не используйте NuGet вообще. Разместите двоичные файлы в отдельном каталоге, который зарегистрирован в системе управления версиями.
person Matt Ward    schedule 24.08.2014

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

Использование папки библиотеки также позволяет кому-то обновить пакет nuget, если в этом возникнет необходимость. Им нужно не забыть переместить его в эту новую папку библиотеки и сослаться на нее.

Стоит также помнить, что когда вы обновляете пакет nuget, старая версия остается в папке пакетов, к вашему сведению.

Наконец, использование такого инструмента, как Nuget Restore, может не сработать, если у вас есть автоматизированные системы сборки, поскольку им потребуются указанные библиотеки DLL, включенные в проект, и они не будут автоматически загружать их.

person siva.k    schedule 23.08.2014
comment
Ваши ответы совпадают с тем, что сказал Мэтт. Я решил зарегистрировать только packages.config. На данный момент у меня нет автоматизированной сборки. - person wonderful world; 25.08.2014