Я пытаюсь заставить TFS (2013) игнорировать мою packages
папку. Я страстно не хочу, чтобы источник контролировался, поскольку я использую NuGet, и это здорово!
Я пытался скрыть (кажется, не работает), я пытался добавить .tfignore
файлы - ничего не игнорируется. Почему команда TFS не добавляет опцию для постоянного игнорирования папки или файла, как это делают многие клиенты Subversion ?!
Ответы:
Вот в чем дело: мы должны сказать и NuGet, и TFS игнорировать пакеты, потому что NuGet пытается делать вещи, связанные с управлением исходным кодом, чего он абсолютно не должен делать (дурной тон, Microsoft!). Таким образом, вы должны сделать две вещи.
Сначала добавьте файл с именем
.tfignore
в папку решения (обратите внимание на отсутствиеs
послеtf
). Его содержание должно быть следующим:Это говорит TFS игнорировать папку ваших пакетов. Теперь вы можете подумать, что это также проигнорирует
repositories.config
файл. Но это не так. Зачем? Кто знает, пути Microsoft странные и загадочные. На самом деле, я думаю, что это часть NuGet, которую я обрисовал в общих чертах ниже, но если это когда-нибудь будет исправлено в будущем, и вы захотите сохранитьrepositories.config
файл вместо того, чтобы позволить VS восстановить его, вы должны быть в состоянии использовать это:Хорошо, теперь, благодаря нашему
.tfignore
файлу, TFS игнорирует ваши пакеты. Все хорошо, верно? НЕПРАВИЛЬНО , потому что NuGet работает с вашим контролем версий и добавляет пакеты в ожидающие изменения. Так что теперь давайте скажем NuGet, чтобы он уже вырезал.Создайте папку с именем
.nuget
в корне папки вашего решения. 1 Теперь создайте файл с именемNuGet.config
и поместите его в эту новую папку 2 . Его содержимое должно выглядеть так:И теперь ваши пакеты должны оставаться вне системы контроля версий. Только не забудьте добавить
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 случайным образом решит, что не может восстановить пакеты.
источник
Альтернативное решение вышесказанного заключается в следующем.
Стоит отметить, что это решение необходимо будет применять для каждого рабочего пространства TFS. Это сработало гораздо надежнее для меня, чем использование
.tfignore
файла.Вы можете прочитать больше об этом подходе в статье блога Запретить TFS добавлять установленные пакеты NuGet в систему контроля версий .
источник
для людей, сообщающих, что опция .tfignore не работает с параметром nuget.config, это может быть интересно - эти шаги, наконец, сработали для меня:
источник
Добавьте файл nuget.config в папку .nuget в своем решении. Добавьте следующее в файл nuget.config:
DisableSourceControlIntegration - вот что делает трюк для контроля версий TFS.
источник
Вы должны использовать локальные рабочие пространства для
.tfignore
работы..tfignore
Файл должен находиться в папке , которая содержит файлы или папки , которые вы хотите игнорировать.Итак, если ваша структура решения выглядит следующим образом:
Вы бы поместили свой файл .tfignore в \ Project:
Содержимое .tfignore в вашем случае будет:
\packages
Вот некоторая документация для вас: http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
источник
packages
а не\packages
как относительный.Вы можете навсегда установить это единовременное
AppData\Roaming
решение для всех решений (старых и новых)!В своем
%AppData%\NuGet\NuGet.Config
файле добавьте следующее прямо перед</configuration>
тегом XML ...... вы можете указать любой путь, который вам нужен - главное, чтобы он был вне вашего рабочего пространства TFS!
Теперь вам больше не придется беспокоиться об этом. В папке вашего решения больше не будет пакетов; все решения по умолчанию будут использовать вместо вас расположение ваших пользовательских пакетов.
ПРИМЕЧАНИЕ. - Это работает для каждого пользователя.
источник
Установите решение для восстановления при сборке, папка пакета и файл пакетов будут проверены, но пакеты не будут.
источник
Если вы используете Git с TFS, вам нужно добавить файл «.gitignore». Вы можете сделать это в «командном проекте | Настройки |« Добавить файл игнорирования »». Затем откройте файл и раскомментируйте встроенный оператор игнорирования для пакетов Nuget.
Если вы используете TFVC и у вас настроены локальные рабочие пространства, вы можете использовать файл ".tfignore", который соответствует формату, аналогичному файлу Git. Я думаю, что вам нужны "пакеты /".
источник
Это не сработало для меня на визуальной студии онлайн и VS2013.
Из других комментариев кажется, что ваш milage может отличаться на этом этапе. Вот что я делаю:
Проверьте все, в том числе любые пакеты.
Удалите все пакеты в вашем решении и затем отметьте это изменение (это удалит пакеты из TFS)
Откройте решение и выполните сборку, которая добавит пакеты в проект, но TFS не подберет их.
источник
Решение, которое мне помогло, состояло в том, чтобы создать .tfignore и следующий параметр в Nuget.Config:
Мой .tfignore содержит эту строку:
[Я использую Visual Studio 2015 Update 2]
Это не идеально, и в настоящее время зарегистрирован как открытая проблема на github / nuget:
Упростите пропуск пакетов из TFVC # 493
источник
Ответ Терье не работает для меня все время, иногда он будет работать какое-то время, но затем он снова и снова будет ожидать для меня «добавлений».
Единственный способ решить эту проблему навсегда - это скрыть папку пакетов в моей рабочей области.
Например:
источник
Я была такая же проблема.
/packages
должен работать, но не для меня.packages*.*
сделал работу.источник