Ось угода: Ми повинні сказати і 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 випадково вирішить, що він не може відновити пакунки.