Ось угода: Ми повинні сказати і 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 . Додайте папку за допомогою Explorer Control Explorer; клацніть правою кнопкою миші рішення-> Додати папку ->. nuget
2 . Коли я зрозумів це за допомогою VS 2013, я виявив, що NuGet.config повинен був перейти в папку .nuget. Навіть якщо у вас вже є файл NuGet.config у корені папки з рішеннями (оскільки, скажімо, у вашої компанії є внутрішній нудовий канал). Однак деякі з коментарів вказали, що він працює добре в корені рішення у VS 2015. Особисто я перейшов на використання TFS в режимі git, тому не можу перевірити. Крім того, якщо у вас є власний канал, переконайтеся, що у вас є як власний канал, так і nuget.org як ключі у файлі Nuget.config, інакше TFS випадково вирішить, що він не може відновити пакунки.