Próbuję przekonać TFS (2013) do zignorowania mojego packages
folderu. Namiętnie nie chcę, aby źródła były kontrolowane, ponieważ korzystam z NuGet i jest świetnie!
Próbowałem maskować (nie działa), próbowałem dodawać .tfignore
pliki - nic nie jest ignorowane. Dlaczego zespół TFS po prostu nie dodaje opcji trwałego ignorowania folderu lub pliku, jak robi to wielu klientów Subversion ?!
Odpowiedzi:
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 braks
po nimtf
). Jego zawartość powinna wyglądać następująco: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: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 nazwieNuGet.config
i umieść go w tym nowym folderze 2 . Jego zawartość powinna wyglądać następująco: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.
źródło
Alternatywne rozwiązanie powyższego jest następujące.
Warto zauważyć, że to rozwiązanie musiałoby zostać zastosowane dla obszaru roboczego TFS. Działa o wiele bardziej niezawodnie dla mnie niż przy użyciu
.tfignore
pliku.Możesz przeczytać więcej o tym podejściu w artykule na blogu Zapobiegaj dodawaniu przez TFS zainstalowanych pakietów NuGet do kontroli źródła .
źródło
dla osób zgłaszających, że opcja .tfignore nie działa z ustawieniem nuget.config, może być interesujące - te kroki w końcu dla mnie zadziałały:
źródło
Dodaj plik nuget.config do folderu .nuget w swoim rozwiązaniu. Dodaj następujące pliki do pliku nuget.config:
WyłączenieSourceControlIntegration jest tym, co czyni sztuczkę kontroli wersji TFS.
źródło
Do pracy musisz używać lokalnych obszarów
.tfignore
roboczych..tfignore
Plik musi znajdować się w folderze, który zawiera pliki lub foldery, które chcesz ignorować.Więc jeśli struktura rozwiązania wygląda następująco:
Umieścisz plik .tfignore w \ Project:
Zawartość .tfignore w twoim przypadku to:
\packages
Oto dokumentacja dla Ciebie: http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
źródło
packages
a\packages
nie względny.Możesz na stałe ustawić to jednorazowo we
AppData\Roaming
wszystkich rozwiązaniach (starych i nowych)!W swoim
%AppData%\NuGet\NuGet.Config
pliku dodaj następujące przed</configuration>
tagiem XML ...... możesz podać dowolną ścieżkę - ważne jest, aby umieścić ją NA ZEWNĄTRZ obszaru roboczego TFS!
Teraz już nigdy nie będziesz musiał się o to martwić. Folder rozwiązania nie będzie już zawierał żadnych pakietów; zamiast tego wszystkie rozwiązania będą domyślnie używać lokalizacji niestandardowych pakietów.
UWAGA - Działa to dla poszczególnych użytkowników.
źródło
Ustaw rozwiązanie, aby przywrócić podczas kompilacji, folder pakietu i plik paczek zostaną pobrane, ale pakiety nie.
źródło
Jeśli używasz Git z TFS, musisz dodać plik „.gitignore”. Możesz to zrobić w „projekcie zespołu | Ustawienia |„ dodaj plik zignoruj ””. Następnie otwórz plik i usuń komentarz z wbudowanej instrukcji ignorowania dla pakietów Nuget.
Jeśli używasz TFVC i masz skonfigurowane lokalne obszary robocze, możesz użyć pliku „.tfignore”, który honoruje identyczny format jak plik Git. Myślę, że potrzebujesz „paczek /”.
źródło
Nie działało to dla mnie całkiem dobrze w studiu wizualnym online i VS2013.
Z innych komentarzy wynika, że twój przebieg może się w tym momencie różnić. To jest to, co robie:
Sprawdź wszystko, w tym wszystkie pakiety.
Usuń wszystkie pakiety ze swojego rozwiązania, a następnie sprawdź tę zmianę (spowoduje to usunięcie pakietów z TFS)
Otwórz rozwiązanie i kompilację, która doda pakiety do projektu, ale TFS ich nie odbierze.
źródło
Rozwiązaniem, które działało dla mnie, było utworzenie zarówno pliku .tfignore, jak i następującego ustawienia w Nuget.Config:
Mój .tfignore zawiera następujący wiersz:
[Używam Visual Studio 2015 Update 2]
To nie jest idealne i jest obecnie rejestrowane jako otwarty problem na github / nuget:
Ułatw pominięcie pakietów z TFVC # 493
źródło
Odpowiedź Terje nie działa dla mnie cały czas, czasem będzie działała przez jakiś czas, ale potem znów będzie mnie obciążać „dodawaniem”.
Jedynym sposobem, w jaki znalazłem rozwiązanie tego problemu na stałe, jest Ukrywanie folderu paczek w moim obszarze roboczym.
Na przykład:
źródło
Miałem ten sam problem.
/packages
powinien działać, ale nie dla mnie.packages*.*
zadziałało.źródło