Oto umowa: musimy powiedzieć zarówno NuGet, jak i TFS, aby zignorowały pakiety, ponieważ NuGet próbuje robić rzeczy związane z kontrolą źródła, których absolutnie nie powinno robić (zła forma, Microsoft!). Więc musisz zrobić dwie rzeczy.
Najpierw dodaj plik o nazwie .tfignore
do folderu rozwiązania (zwróć uwagę na brak s
po nim tf
). Jego zawartość powinna wyglądać następująco:
\packages
To mówi TFS, aby zignorował folder pakietów. Można by pomyśleć, że to również zignoruje repositories.config
plik. Ale nie będzie. Dlaczego? Kto wie, drogi Microsoftu są dziwne i tajemnicze. Właściwie myślę, że jest to część rzeczy NuGet, które przedstawię poniżej, ale jeśli kiedykolwiek zostanie to naprawione w przyszłości i chcesz zachować repositories.config
plik zamiast pozwolić VS go zregenerować, powinieneś być w stanie użyć tego:
\packages
!\packages\repositories.config
OK, więc teraz dzięki naszemu .tfignore
plikowi TFS ignoruje twoje pakiety. Wszystko w porządku, prawda? ŹLE , bo Nuget jest mucking z kontroli źródła i dodając do swoich pakietów toczących się zmian. Teraz powiedzmy NuGet, żeby już to wycięło.
Utwórz folder o nazwie .nuget
w katalogu głównym folderu rozwiązania. 1 Teraz utwórz plik o nazwie NuGet.config
i umieść go w tym nowym folderze 2 . Jego zawartość powinna wyglądać następująco:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
A teraz twoje pakiety powinny pozostać poza kontrolą źródła. Pamiętaj tylko, aby dodać pliki NuGet.config
i .tfignore
do kontroli źródła, aby nigdy się nie zgubiły.
EDYCJA: Jeśli masz problemy, możesz usunąć folder paczek, sprawdzić tę zmianę, a następnie wykonać powyższe kroki.
RÓWNIEŻ EDYCJA: Wygląda na to, że tak się nie stanie z nowszymi wersjami Nuget. Więc może po przejściu na VS / TFS 2017 ten problem zostanie rozwiązany bez przeskakiwania przez powyższe obręcze.
1 . Dodaj folder za pomocą Eksploratora kontroli źródła; kliknij prawym przyciskiem myszy rozwiązanie-> Dodaj folder -> .nuget
2 . Kiedy wymyśliłem to za pomocą VS 2013, okazało się, że NuGet.config musiał przejść do folderu .nuget. Nawet jeśli masz już plik NuGet.config w katalogu głównym folderu rozwiązania (ponieważ, powiedzmy, twoja firma ma wewnętrzny kanał nuget). Jednak w niektórych komentarzach wskazano, że działa dobrze w katalogu głównym rozwiązania w VS 2015. Osobiście przełączyłem się na używanie TFS w trybie git, więc nie mogę testować. Dodatkowo, jeśli masz niestandardowy kanał, upewnij się, że masz zarówno niestandardowy kanał, jak i nuget.org jako klucze w pliku Nuget.config, a czasem TFS losowo zdecyduje, że nie może przywrócić pakietów.