W nowszych wersjach NuGet można skonfigurować projekt do automatycznego przywracania pakietów NuGet, dzięki czemu packages
folder nie musi być uwzględniany w repozytorium kodu źródłowego. Dobry.
Jednak to polecenie dodaje nowy .nuget
folder i jest tam plik binarny, NuGet.exe. Może to również zostać ponownie utworzone automatycznie przez program Visual Studio, więc dodawanie tego do kontroli wersji nie jest poprawne. Jednak bez tego folderu program Visual Studio nawet nie załaduje poprawnie rozwiązania.
Jak sobie z tym radzicie? Dodać .nuget do kontroli źródła? Uruchomić skrypt wiersza poleceń przed otwarciem rozwiązania?
visual-studio
version-control
nuget
Borek Bernard
źródło
źródło
Odpowiedzi:
Ten wpis jest stary, nie należy już używać przywracania pakietu NuGet na poziomie rozwiązania. Od wersji 2.7 lub nowszej w konfiguracji NuGet istnieje opcja automatycznego przywracania pakietów podczas kompilacji. Dzięki temu folder .nuget może zostać usunięty, a opcja usunięta z projektów.
http://docs.nuget.org/docs/reference/package-restore
AKTUALIZACJA: Wraz z wydaniem NuGet 4.x i .NET Standard 2.0, gdy używasz nowego formatu csproj, możesz teraz używać odwołań do pakietów, ironicznie przywracając zależność od msbuild do przywracania pakietów, ale teraz pakiety są obywatelami pierwszej klasy MSBuild . Powyższy link również wspomina o
PackageReference
, ale poniższe ogłoszenie opisuje to lepiej:https://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html
I zapowiedź NuGet 4.x RTM, która jak na ironię nie jest tak przydatna:
https://blog.nuget.org/20170308/Announcing-NuGet-4.0-RTM.html
AKTUALIZACJA 2: Najwyraźniej w VS2017 można nawet używać odwołań do pakietów z klasycznymi projektami csproj, ale nie są one już kompatybilne wstecz i wystąpiły problemy z przywróceniem zależności podrzędnych pakietów. Jestem pewien, że wszystko zostanie rozwiązane.
źródło
Tools > Extensions & Updates > Updates
.Odpowiedź @Richarda Szalaya jest prawidłowa - nie musisz zatwierdzać nuget.exe. Jeśli z jakichś powodów program Visual Studio nie pobiera automatycznie pliku NuGet. Exe, upewnij się, że w pliku masz następujący ustawiony na wartość true
nuget.targets
:Zamknij rozwiązanie VS, otwórz je ponownie i skompiluj. Program Visual Studio powinien teraz automatycznie pobrać plik NuGet.exe.
źródło
true
domyślnie?Zgodnie z tym wątkiem , wersja folderu .nuget powinna być kontrolowana.
źródło
Musisz się zaangażować
.nuget\nuget.targets
, ale nienuget.exe
. Obiekty docelowe pobiorą exe, jeśli nie istnieje, o ile zmieniszDownloadNuGetExe
natrue
nuget.targetsźródło
Chociaż zwykle nie podoba mi się pomysł dodawania plików exe do kontroli źródła, sugerowałbym, aby kontrola źródła zawierała wszystko, co jest wymagane do otwarcia, zbudowania i wykonania projektu.
W tym przypadku wygląda na to, że folder .nuget jest wymaganą zależnością. Dlatego powinien być pod kontrolą źródła.
Pozostaje tylko pytanie, które należy zbadać, to, jak NuGet zareaguje, jeśli ten folder zostanie oznaczony jako tylko do odczytu, co zrobi TFS po jego zarejestrowaniu.
Aktualizacja: Zrobiłem trochę więcej badań na ten temat, ponieważ nigdy wcześniej nie korzystałem z NuGet. http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
Sugerowałbym, że prawdopodobnie to, co chcesz zrobić, to uczynić NuGet wymaganiem, które musi być zainstalowane na każdej stacji roboczej dewelopera.
Ponadto należy umieścić w kontroli źródła plik wsadowy wymagany do przygotowania stacji roboczej do rozpoczęcia edycji projektu. Plik wsadowy będzie uruchamiał polecenia niezbędne do pobrania i zainstalowania pakietów zależności.
Poza tym powiedziałbym, że możesz chcieć skontaktować się bezpośrednio z NuGet, aby zapytać ich, jak dokładnie to ma działać.
źródło
<RestorePackages>true</RestorePackages>
w pliku * .csproj powinno być wystarczająco dużo informacji dla Visual Studio, ale może tak nie jest.Teraz, gdy nuget obsługuje przywracanie pakietów, przyjrzymy się temu dokładniej.
Używamy Subversion do kontroli źródła i moje początkowe przemyślenia są takie, że
.nuget
powinno zostać dodane do naszego repozytorium, ale dodane za pomocą svn: externals, aby wskazywało na jedną lokalizację.W ten sposób możemy automatycznie wysyłać nowe wersje do wszystkich programistów i projektów. W przypadku projektów w gałęziach wydania, a nie HEAD, możemy określić wersję odwołania svn: externals, jeśli chcemy zostawić nuget w spokoju.
Mamy wiele projektów, więc oznacza to również nie dublowanie
nuget.exe
wielokrotnie w repozytorium.źródło
Mamy
nuget.config
plik w folderze, ponieważ zawiera on odniesienia do naszego wewnętrznego serwera Nuget, korzystając z obszaru Źródła pakietów: https://docs.nuget.org/consume/nuget-config-settingsOprócz tego należy pozwolić programowi Visual Studio na obsługę pobierania pakietów.
źródło