Вот в чем дело: мы должны сказать и NuGet, и TFS игнорировать пакеты, потому что NuGet пытается делать вещи, связанные с управлением исходным кодом, чего он абсолютно не должен делать (дурной тон, Microsoft!). Таким образом, вы должны сделать две вещи.
Сначала добавьте файл с именем .tfignore
в папку решения (обратите внимание на отсутствие s
после tf
). Его содержание должно быть следующим:
\packages
Это говорит TFS игнорировать папку ваших пакетов. Теперь вы можете подумать, что это также проигнорирует repositories.config
файл. Но это не так. Зачем? Кто знает, пути Microsoft странные и загадочные. На самом деле, я думаю, что это часть NuGet, которую я обрисовал в общих чертах ниже, но если это когда-нибудь будет исправлено в будущем, и вы захотите сохранить repositories.config
файл вместо того, чтобы позволить VS восстановить его, вы должны быть в состоянии использовать это:
\packages
!\packages\repositories.config
Хорошо, теперь, благодаря нашему .tfignore
файлу, TFS игнорирует ваши пакеты. Все хорошо, верно? НЕПРАВИЛЬНО , потому что NuGet работает с вашим контролем версий и добавляет пакеты в ожидающие изменения. Так что теперь давайте скажем NuGet, чтобы он уже вырезал.
Создайте папку с именем .nuget
в корне папки вашего решения. 1 Теперь создайте файл с именем NuGet.config
и поместите его в эту новую папку 2 . Его содержимое должно выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
И теперь ваши пакеты должны оставаться вне системы контроля версий. Только не забудьте добавить NuGet.config
и .tfignore
файлы в систему управления версиями , чтобы они никогда не заблудитесь.
РЕДАКТИРОВАТЬ: Если у вас возникли проблемы, вы можете удалить папку пакетов, проверить это изменение, а затем выполните действия, описанные выше.
ТАКЖЕ РЕДАКТИРОВАТЬ: Похоже, что это не произойдет с более новыми версиями Nuget. Так что, возможно, если вы переключитесь на VS / TFS 2017, эта проблема исчезнет, не перепрыгивая через описанные выше обручи.
1 . Добавьте папку с помощью Source Control Explorer; щелкните правой кнопкой мыши решение-> Добавить папку ->. nuget
2 . Когда я понял это с помощью VS 2013, я обнаружил, что NuGet.config должен быть в папке .nuget. Даже если у вас уже есть файл NuGet.config в корне папки вашего решения (потому что, скажем, у вашей компании есть внутренний фид Nuget). Тем не менее, некоторые в комментариях указали, что он отлично работает в корне решения в VS 2015. Лично я перешел на использование TFS в режиме git, поэтому я не могу проверить. Кроме того, если у вас есть пользовательский канал, убедитесь, что у вас есть и пользовательский канал, и nuget.org в качестве ключей в файле Nuget.config, или иногда TFS случайным образом решит, что не может восстановить пакеты.