Zaewidencjonowałem projekt na jednym komputerze, wyewidencjonowałem na innym i stwierdziłem, że brakuje plików binarnych zainstalowanych przez NuGet. Mógłbym również sprawdzić je w kontroli źródła, ale wygląda na to, że istnieje lepsze rozwiązanie:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Postępowałem zgodnie z tymi instrukcjami, teraz mam .nuget
folder, w którym powinien być, w moim pliku .csproj znajdują się następujące wpisy:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
a jednak kiedy odbudowuję moje rozwiązanie, brakujące pakiety nie są przywracane.
czego mi brakuje? Jak mogę zdiagnozować ten problem?
Odpowiedzi:
Należy pamiętać, że można wymusić wykonanie przywracania pakietów, uruchamiając następujące polecenia w konsoli menedżera pakietów NuGet
Wymusza ponowną instalację wszystkiego w rozwiązaniu.
Wymusza ponowną instalację wszystkiego w projekcie myProj.
Uwaga : to jest opcja jądrowa. Używając tego polecenia, możesz nie otrzymać tych samych wersji zainstalowanych pakietów, co może prowadzić do problemów. Jest to mniej prawdopodobne na poziomie projektu niż na poziomie rozwiązania.
Można użyć
-safe
opcji parametru wiersza polecenia, aby ograniczyć aktualizacje do nowszych wersji z tym samym składnikiem wersji głównej i pomocniczej. Ta opcja została dodana później i rozwiązuje niektóre problemy wymienione w komentarzach.źródło
Dla innych, którzy natkną się na ten post, przeczytaj to.
Program NuGet 2.7+ wprowadził nas do automatycznego przywracania pakietów . Jest to uważane za znacznie lepsze podejście w przypadku większości aplikacji, ponieważ nie narusza procesu MSBuild. Mniej bólów głowy.
Kilka linków ułatwiających rozpoczęcie pracy:
źródło
Musisz wybrać jedną z następujących możliwości:
Ponowna instalacja pakietu według jego nazwy we wszystkich projektach rozwiązania:
Ponowna instalacja pakietu według jego nazwy i ignorowanie jego zależności we wszystkich projektach rozwiązania:
Ponowna instalacja pakietu według jego nazwy w projekcie:
Ponowna instalacja wszystkich pakietów w określonym projekcie:
Ponowna instalacja wszystkich pakietów w rozwiązaniu:
źródło
Czy włączyłeś tryb przywracania pakietów w projekcie, który ma brakujące pakiety / pliki binarne? Istnieje znany problem, który wymaga poprawnej instalacji pakietów podczas włączania trybu przywracania:
http://nuget.codeplex.com/workitem/1879
Oryginalny link jest martwy; może to być zamiennik: https://github.com/NuGet/Home/issues/1968
źródło
VS 2017
Narzędzia> Menedżer pakietów NuGet> Ustawienia Menedżera pakietów> Ogólne Kliknij opcję „Wyczyść wszystkie pamięci podręczne NuGet”
źródło
Napotkałem ten problem w dwóch scenariuszach.
Po pierwsze, kiedy próbuję zbudować moje rozwiązanie z wiersza poleceń przy użyciu programu msbuild.exe. Po drugie, kiedy próbuję zbudować sln i zawierające je projekty na moim serwerze kompilacji przy użyciu TFS i CI.
Pojawiają się błędy z twierdzeniem, że brakuje referencji. Podczas sprawdzania zarówno mojego lokalnego katalogu kompilacji, jak i serwera TFS widzę, że folder / packages nie jest tworzony, a pakiety NuGet nie są kopiowane. Postępuj zgodnie z instrukcjami podanymi w odpowiedzi Alexandre'a http://nuget.codeplex.com/workitem/1879 również nie działa dla mnie.
Włączyłem pakiety przywracania za pośrednictwem VS2010 i widziałem, że kompilacje działają tylko z poziomu VS2010. Ponownie, użycie msbuild kończy się niepowodzeniem.Moje obejście jest prawdopodobnie całkowicie nieprawidłowe, ale w moim środowisku wszystko działało z lokalnej kompilacji wiersza poleceń, a także z kompilacji CI w TFS.
Wszedłem do. \ Nuget i zmieniłem ten wiersz w pliku .nuget \ NuGet.targets:
z:
to: (uwaga, bez cudzysłowów wokół zmiennych)
Rozumiem, że jeśli moje katalogi zawierają spacje, to się nie powiedzie, ale nie mam spacji w moich katalogach, więc to obejście sprawiło, że moje kompilacje zakończyły się pomyślnie ... na razie.
Powiem, że włączenie rejestrowania poziomu diagnostycznego w kompilacji pomoże pokazać, jakie polecenia są wykonywane przez msbuild. To właśnie doprowadziło mnie do tymczasowego zhakowania pliku celów.
źródło
Jeśli coś innego nie zadziałało, spróbuj:
Pracował dla mnie i łatwo jest spróbować.
źródło
Jeśli żadna z pozostałych odpowiedzi nie działa, wypróbuj następujące rozwiązanie, które było jedyną rzeczą, która działała dla mnie:
Znajdź swój
.csproj
plik i edytuj go w edytorze tekstu.Znajdź
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
tag w swoim.csproj
pliku i usuń cały blok.Zainstaluj ponownie wszystkie pakiety w rozwiązaniu:
Następnie należy przywrócić pakiety NuGet, myślę, że może to być przypadek poboczny, który występuje tylko wtedy, gdy przenosisz projekt do innej lokalizacji.
źródło
Tylko w przypadku innych osób, które mogły napotkać ten problem, udało mi się go rozwiązać, zamykając program Visual Studio i ponownie otwierając projekt. Po załadowaniu projektu pakiety zostały przywrócone w fazie inicjalizacji.
źródło
Dla mnie miałem pusty tag NuGetPackageImportStamp w .csproj
Najlepiej byłoby, gdyby zawierał ważny identyfikator GUID.
Usunięcie powyższego tagu, a następnie „Restore Nugets” działało u mnie.
źródło
Czasami dzieje się coś dziwnego i używanie programu Visual Studio do automatycznego przywracania nie działa. W takim przypadku możesz użyć konsoli Menedżera pakietów NuGet. Jest to otwierane w programie Visual Studio z poziomu Narzędzia -> Menedżer pakietów NuGet -> Konsola Menedżera pakietów . Polecenia w konsoli są proste. Aby uzyskać pomoc kontekstową podczas wpisywania polecenia, po prostu naciśnij przycisk, a otrzymasz wszystkie opcje zaczynające się od wpisywanych liter. Jeśli więc pakiet nie jest zainstalowany, na przykład log4net, wpisz następujące polecenie:
Zainstaluj pakiet log4net
Możesz zrobić o wiele więcej, na przykład określić wersję do zainstalowania, zaktualizować pakiet, odinstalować pakiet itp.
Musiałem użyć konsoli, aby mi pomóc, gdy Visual Studio zachowywał się jak dziwak.
źródło
Automatyczne przywracanie pakietu zakończy się niepowodzeniem z jednego z następujących powodów:
Poniższy artykuł przedstawia bardziej szczegółowo, jak przejść do punktów 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
źródło
Pakiety NuGet pękały po wykonaniu przywracania systemu w moim systemie, tworząc kopię zapasową przez około dwa dni. (W międzyczasie pakiety NuGet zostały zainstalowane). Aby to naprawić, musiałem przejść do folderu .nuget \ packages w moim profilu użytkownika, znaleźć pakiety i je usunąć. Dopiero wtedy program Visual Studio ściągnie pakiety na nowo i poprawnie doda je jako odwołania.
źródło
Najlepsze obejście, jakie znalazłem, tworząc nowy projekt od podstaw, a następnie zaimportuj wszystkie pliki źródłowe z kodem. Mój projekt nie był tak skomplikowany, więc nie miałem z tym problemu.
źródło
Żadne z innych rozwiązań nie zadziałało w mojej sytuacji:
Zależności AspNetCore zostały zainstalowane / odinstalowane i były buforowane. „AspNetCore.All” odmówiłby prawidłowej aktualizacji / ponownej instalacji / usunięcia. I niezależnie od tego, co zrobiłem, użyłby buforowanych zależności (z którymi nie był kompatybilny), ponieważ były one wyższą wersją.
PackageReference
bin
,obj
folderyTools > Nuget Package Manager > Package Manager Settings
iClear all Nuget caches
. Sprawdź konsolę, ponieważ usunięcie niektórych elementów może się nie powieść - skopiuj ścieżkę folderu i zamknij program Visual Studio.Jeśli to nadal nie działa, powtórz, ale także przeszukaj dysk w Eksploratorze Windows w poszukiwaniu
nuget
i usuń wszystko, co wygląda w pamięci podręcznej.źródło
vs2015 nie włącza problemu przywracania NuGet. Moje rozwiązanie:
dodaj folder .nuget, dodaj plik NuGet.Config i NuGet.targets w Directory .nuget
każdy plik projektu add: build
źródło
Jeśli błąd, z którym się spotykasz, to „nie można połączyć się ze zdalnym serwerem”, tak jak był to mój, skorzystasz również z tego sprawdzenia oprócz sprawdzeń opisanych w powyższych komentarzach.
Widziałem, że istnieją 2 źródła pakietów NUGET, z których można pobrać pakiety (w menu Narzędzia-> Menedżer pakietów Nuget-> Ustawienia Menedżera pakietów). Jedno ze źródeł pakietu nie działało i Nuget próbował pobrać tylko z tego źródła.
Wszystko zaczęło się układać, gdy zmieniłem źródło pakietu do pobrania z: https://www.nuget.org/api/v2/ WYJĄTKOWO w ustawieniach
źródło
W moim przypadku przerwana próba przywrócenia Nuget spowodowała uszkodzenie jednego z
packages.config
plików w rozwiązaniu. Nie odkryłem tego przed sprawdzeniem mojego drzewa roboczego git. Po cofnięciu zmian w pliku przywracanie Nuget znów działało.źródło
Istnieje skrót umożliwiający przywrócenie Nuget, 1. Upewnij się, że połączenie internetowe lub adresy URL Nuget są prawidłowe w menu opcji VS Tools 2. Spójrz na folder .nuget lub nuget w rozwiązaniu, w przeciwnym razie - skopiuj z dowolnego, aby uzyskać plik NuGet.exe
USUŃ foldery pakietów, jeśli istnieją
Otwórz konsolę Menedżera pakietów, wykonaj to polecenie
źródło
W VS2017 kliknij prawym przyciskiem myszy rozwiązanie => Otwórz CommandLine => Developer Command Line.
Gdy to się otworzy, wpisz (i naciśnij Enter po)
Spowoduje to przywrócenie wszystkich / wszystkich pakietów i otrzymasz niezły wynik konsoli z tym, co zostało zrobione ...
źródło