Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разработчики обычно не включают пакеты NuGet в репозитории системы управления версиями и вместо этого полагаются на функцию восстановления пакетов для переустановки зависимостей проекта перед сборкой.
Восстановление пакета осуществляется по следующим причинам:
- Распределенные системы управления версиями, такие как Git, включают полные копии каждой версии каждого файла в репозитории. Двоичные файлы, которые часто обновляются, приводят к значительному увеличению размера и продлевают время, необходимое для клонирования репозитория.
- Если пакеты включены в репозиторий, разработчики могут добавлять ссылки непосредственно на содержимое пакета на диске, а не ссылаться на пакеты через NuGet, что может привести к жестко закодированных именам путей в проекте.
- Чистка проекта от неиспользуемых директорий пакетов становится сложнее, так как нужно убедиться, что не удаляются папки пакетов, которые по-прежнему используются.
- Исключая пакеты, вы сохраняете четкие границы ответственности между вашим кодом и пакетами от других, от которых вы зависите. Многие пакеты NuGet поддерживаются в собственных репозиториях систем контроля версий.
Хотя восстановление пакетов — это поведение по умолчанию с NuGet, некоторые действия вручную необходимы, чтобы опустить пакеты (а именно packages , папку в проекте) из системы управления версиями, как описано в этой статье.
Исключение пакетов в Git
Используйте файл gitignore , чтобы игнорировать пакеты NuGet (.nupkg) папку packages и project.assets.json, помимо прочего. Дополнительные сведения см. в примере .gitignore проектов Visual Studio:
Важные части .gitignore файла:
# Ignore NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction
# with project.json (NuGet v3); project.assets.json is used in conjunction with the PackageReference
# format (NuGet v4 and .NET Core).
project.lock.json
project.assets.json
Опущение пакетов с помощью управления версиями Team Foundation
Замечание
Следуйте этим инструкциям, если это возможно прежде чем добавлять проект в систему контроля версий. В противном случае вручную удалите папку packages из репозитория и проверьте это изменение, прежде чем продолжить.
Чтобы отключить интеграцию системы управления версиями с TFVC для выбранных файлов:
Создайте папку, названную
.nuget, в вашей папке решения (где находится файл.sln).- Совет: в Windows, чтобы создать эту папку в проводнике Windows, используйте имя
.nuget.с законечной точкой.
- Совет: в Windows, чтобы создать эту папку в проводнике Windows, используйте имя
В этой папке создайте файл с именем
NuGet.Configи откройте его для редактирования.Добавьте следующий текст как минимум, где параметр disableSourceControlIntegration указывает Visual Studio пропустить все в папке
packages:<?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>Если вы используете TFS 2010 или более ранней версии, скройте папку
packagesв сопоставлениях рабочей области.В TFS 2012 или более поздней версии или в Visual Studio Team Services создайте
.tfignoreфайл, как описано в разделе "Добавление файлов на сервер". В этом файле добавьте содержимое ниже, чтобы явно игнорировать изменения\packagesпапки на уровне репозитория и несколько других промежуточных файлов. (Файл можно создать в проводнике Windows с именем.tfignore.с завершающей точкой, но вам может потребоваться сначала отключить параметр "Скрыть известные расширения файлов".)# Ignore NuGet Packages *.nupkg # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages' # with additional folder names if it's not in the same folder as .tfignore. packages # Omit temporary files project.lock.json project.assets.json *.nuget.propsДобавьте
NuGet.Configи.tfignoreв систему управления версиями и зафиксируйте изменения.