Nie znaleziono pliku zasobów project.assets.json. Uruchom przywracanie pakietu NuGet

260

Próbuję użyć nopCommerce (który jest napisany w .NET Core), ale kiedy chcę uruchomić projekt, napotykam 52 błędy, które mówią mi: Uruchom przywracanie pakietu nuget

Plik zasobów ~ \ obj \ project. resources.json nie znaleziono. Uruchom przywracanie pakietu NuGet, aby wygenerować ten plik. Nop.Web.MVC.Testsote

po kliknięciu rozwiązania prawym przyciskiem myszy i wybraniu opcji Przywróć pakiety Nuget pojawia się następujący komunikat:

Wszystkie pakiety są już zainstalowane i nie ma nic do przywrócenia.

ale te 52 błędy są nadal obecne, aw Narzędziach -> Menedżer pakietów NuGet -> Zarządzaj pakietami NuGet dla rozwiązania nie ma nic zainstalowanego w rozwiązaniu, również Ostatnio zaktualizowałem VS2017 do wersji 15.5.4

Nigdy nie ufaj
źródło
Czy wyraziłeś zgodę na przywrócenie NuGet? Przejdź do narzędzi, opcji, wyszukaj NuGet i zaznacz opcję „Zezwalaj NuGet ...”.
imps
Jeśli ktoś jest na komputerze Mac, mieliśmy ten problem i naprawiliśmy go, usuwając spacje ze ścieżki repozytorium (która została utworzona podczas ściągania git): Mój% 20Project staje się MyProject.
David Hague

Odpowiedzi:

454

Aby naprawić ten błąd w menu Narzędzia> Menedżer pakietów NuGet> Konsola Menedżera pakietów wystarczy uruchomić:

dotnet restore

Błąd występuje, ponieważ cli dotnet nie tworzy początkowo wszystkich wymaganych plików. Wykonanie przywracania dotnet dodaje wymagane pliki.

Mostafa Bouzari
źródło
21
To była także poprawka dla serwera kompilacji. Dodano krok wiersza poleceń, aby uruchomić „przywracanie dotnet” po normalnym przywracaniu NuGet.
Mark
24
Możesz to zrobić z MSBuild również: msbuild MySolution.sln / t: Restore
Der_Meister
3
@ Rozwiązanie Der_Meistera, aby dodać opcję / t: Restore, działało dla mnie, musiałem jednak zbudować rozwiązanie dwa razy (dwa oddzielne kroki kompilacji). Najpierw z opcją / t: Przywróć, a następnie ponownie bez niej.
Michael
16
@Michael, spróbuj msbuild MySolution.sln / t: Restore; Build
Der_Meister
8
Jeśli masz więcej niż jeden plik rozwiązania, musisz to zrobićdotnet restore solutionfilename.sln
ECH,
97

W moim przypadku błędem było repozytorium GIT. W nazwie były spacje, co uniemożliwia przywrócenie mojego projektu

Jeśli to jest twój problem, po prostu zmień nazwę repozytorium GIT podczas klonowania

git clone http://Your%20Project%20With%20Spaces newprojectname
Sebastian Castaldi
źródło
6
Pomyślałem sobie, że to nie może być to. Po kolejnej godzinie próbowania innych proponowanych rozwiązań w końcu wypróbowałem to z desperacji i rozwiązało to mój problem. Cholera człowieku!
Stark,
2
To naprawiło problem, który miałem, dziękuję bardzo!
Sharbel
3
Ta odpowiedź powinna znajdować się na początku postu, a nie na końcu. Rozwiązałem mój problem.
CodeWarrior
2
Uratowałeś mi dzień! Dziękuję Ci.
mpatel,
3
w moim przypadku właśnie
zmieniłem
42

W przypadku, gdy funkcja „przywracania dotnet” nie działa, pomocne mogą być następujące kroki:

  1. Visual Studio >> Narzędzia >> Opcje >> Nuget Manager >> Źródła pakietów
  2. Odznaczono wszelkie źródła pakietów stron trzecich.
  3. Przebuduj rozwiązanie.
prisan
źródło
3
Ostatnio napotkałem ten problem z serwerem tożsamości Szybki start # 1: Zabezpieczanie interfejsu API przy użyciu poświadczeń klienta i powyższe rozwiązanie działało dla mnie.
Tharindu Jayasinghe
Dziękuję Ci! Właściwie usunąłem jedno źródło, które nie było już istotne (z innego rozwiązania) i na źródłach pakietów nuget.org i MSVS Offline kliknąłem przycisk Aktualizuj . Po tym dotnet restorezadziałało.
CPHPython
Dziękuję, to było to!
tdracz
33

Zamykanie i ponowne otwieranie Visual Studio rozwiązało dla mnie ten problem, gdy upewniłem się, że pakiety NuGet zostały przywrócone zgodnie z innymi odpowiedziami zamieszczonymi tutaj.

OutstandingBill
źródło
Nie mogę uwierzyć, że to zadziałało również dla mnie po przywróceniu dotnet i tylko po tym
Gaspa79
Miałem kilka osobnych problemów z łącznością w mojej sieci LAN, które były hamujące dla NuGet. Ponowne uruchomienie komputera rozwiązało problem!
Neo
To naprawdę nie jest odpowiedzią, ponieważ czasami trzeba używać narzędzi do CLI geta buildi nie wolno otwierać VS. Wiem, dlaczego działa z VS - ponieważ VS automatycznie rozwiązuje zależności projektu.
TS
@TS pytanie jest oznaczone tagiem „Visual Studio 2017”, więc powiedziałbym, że to jest odpowiedź. Podnosisz jednak ciekawą kwestię, że problem leży w rozwiązaniu zależności VS. Jeśli masz więcej informacji na temat tego, co się dzieje, jestem pewien, że przeczytanie tego byłoby interesujące:)
OutstandingBill,
+1. Masz mnie! Z VS, no cóż. Jego wersja 15.5 była błędna. Myślę, że 15.5 / 15.6 miał wiele problemów do rozwiązania problemu. Oto odpowiedź stackoverflow.com/a/58548856/1704458
TS
20

Do osób z tym samym problemem co ja w środowisku Azure DevOps / VSTS napotykają podobny komunikat: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

Dodaj /t:Restoredo argumentów MSBuild w Build Build.

taylorswiftfan
źródło
9

Dla mnie, kiedy to zrobiłem - błąd przywracania nadal występował.

Poszłam do

1 Narzędzie -> Menedżer pakietów NuGet -> Ustawienia Menedżera pakietów -> kliknij „Wyczyść w Catche (ach) Nuget”

2 przywracanie dotnet

rozwiązane problemy.

Prędkość
źródło
Spróbuję to następnym razem. To może być lepsze podejście niż moje (zamknij i otwórz ponownie VS), co zwykle zajmuje mi wieki .
OutstandingBill,
6

W Visual Studio 2017 wykonaj następujące czynności:

1) wybierz Narzędzie => Opcje => Menedżer pakietów NuGet => Źródła pakietów, a następnie odznacz opcję Pakiety offline programu Microsoft Visual Studio . wprowadź opis zdjęcia tutaj

2) teraz otwórz Tool => NuGet Package Maneger => Konsola menedżera pakietów. 3) wykonaj polecenie w PM> przywracanie dotnet.

Mam nadzieję, że działa ...

Manoj Gupta
źródło
6

Dla mnie zaktualizowałem NuGet.exe z 3.4 do 4.9, ponieważ 3.4 nie rozumie, jak przywrócić pakiety dla .NET Core.

Aby uzyskać szczegółowe informacje, zobacz przywracanie dotnet vs. przywracanie nuget w teamcity

użytkownik8128167
źródło
Tak - znalazłem to, kiedy zaczęliśmy migrować stare projekty .Net Framework do nowego .csprojformatu projektu.
StuartLC
5

Wybierz Narzędzia > NuGet Package Manager > Konsola Menedżera pakietów

A następnie Uruchom:

dotnet restore <project or solution name>
Andre Mesquita
źródło
3

trochę za późno na odpowiedź, ale wydaje się, że przyniesie to wartość dodaną. Patrząc na błąd - wydaje się, że występuje w potoku CI / CD.

Wystarczy uruchomienie „kompilacji dotnet”.

kompilacja dotnet

kompilacja dotnet domyślnie uruchamia „przywracanie”.

Sunny Sharma
źródło
1
Można to również osiągnąć, dodając krok „.NET core” do potoku (przed kompilacją) i wybierając polecenie „przywracanie dotnet” z menu rozwijanego. Mówię tu konkretnie o potoku VSTS.
Lech Osiński
3

Nic powyżej nie działało dla mnie. Ale wystarczy usunąć wszystkie foldery „bin” i „obj”.

alexbk66
źródło
Ten problem zdarzył się, gdy pracowałem nad plikiem Docker. usunięcie tych folderów sprawiło, że przywracanie dotnet w kontenerze działało poprawnie.
Johannes
3

Rozwiązany przez dodanie / t: Restore; Build do MSBuild Arguments

Abdulsamet İLERİ
źródło
2

Korzystając z VSTS, sprawdź plik global.json. Wprowadziłem wersję sdk jako „2.2”, co spowodowało błąd analizy (ale nie przy budowaniu lokalnym). Dodanie pełnej wersji „2.2.104” rozwiązało problem.

Rob Minnis
źródło
2

Straciłem kilka godzin na tym błędzie w Azure DevOps, kiedy ustawiłem zadanie „Visual Studio Build” w potoku kompilacji, aby zbudować indywidualny projekt w moim rozwiązaniu, a nie całe rozwiązanie.

To oznacza, że ​​DevOps albo nie buduje żadnego (lub być może niektórych, nie jestem pewien, który) z projektów, do których odwołuje się projekt, na który celowałeś, i dlatego te projekty nie będą miały swojego projektu.json Wygenerowano pliki .asset, co powoduje ten problem.

Rozwiązaniem było dla mnie przejście z zadania VS Build na zadanie MSBuild. Użycie zadania MSBuild dla pojedynczego projektu poprawnie buduje wszystkie projekty, do których odwołuje się projekt, który budujesz i eliminuje ten błąd.

tomRedox
źródło
1

Jeśli zwykłe przywracanie pakietów NuGet nie działa, upewnij się w menu Narzędzia -> Opcje -> Menedżer pakietów NuGet -> Ogólne w obszarze Przywracanie pakietów pakietów zaznaczono opcję „Zezwól NuGet na pobieranie brakujących pakietów”.

Następnie przywróć pakiety NuGet ponownie LUB po prostu ODBUDUJ po usunięciu folderów obj i bin.

NexX
źródło
1

Jeśli @ mostafa-bouzari sugestia nie pomoże, należy dokładnie sprawdzić w „Lista błędów” lub „wyjście” oknami błędów dlaczego Nuget nie można przywrócić, na przykład z powodu problemu netto, jeśli jesteś za pełnomocnika.

flam3
źródło
W moim przypadku Nuget Restore nie mógł połączyć się z naszym prywatnym repozytorium NuGet, ponieważ nie byłem podłączony do firmowej sieci VPN. Sprawdzanie dzienników konsoli Menedżera pakietów pomogło.
Alexander Puchkov
1

Ten problem występuje, gdy narzędzie do kompilacji nie jest ustawione restorew projektach, które mają być używane w PackageReferenceporównaniu zpackages.config Net Core i nowymi stylami Netstandard.

Po otwarciu programu Visual Studio i kompilacji rozwiązuje to za Ciebie. Ale jeśli używasz automatyzacji, narzędzi CLI, widzisz ten problem.

Wiele rozwiązań jest tutaj oferowanych. Ale wszystko, co musisz pamiętać, musisz wymusić restore. W niektórych przypadkach używasz dotnet restoreprzed kompilacją. Jeśli budujesz używając MsBuild, po prostu dodaj /t:Restoreprzełącznik do swojego polecenia.

Podsumowując, musisz dowiedzieć się, dlaczego nie można aktywować przywracania. Nieprawidłowe źródło lub brak działania przywracania albo nieaktualny plik nuget.exe lub wszystkie powyższe.

TS
źródło
1

Bardzo dziwne doświadczenie, które spotkałem!

Sklonowałem wcześniej za pomocą GIT bash i GIT cmd-Line, napotkałem powyższe problemy.

Później sklonowałem za pomocą Tortoise-GIT i wszystko działało zgodnie z oczekiwaniami.

Być może jest to szalona odpowiedź, ale spróbowanie tego raz może zaoszczędzić Twój czas!

Bikram
źródło
1

Widzisz to po dodaniu projektu WinForms Core 3.1 (z szablonów projektów) na VS-2019 vs 16.4.0 i próbie uruchomienia go po wyjęciu z pudełka. Wyczyść lub przebuduj całe rozwiązanie nie działało.

Właśnie przeładowałem moje rozwiązanie ... czyli File / Close Solution, a następnie ponownie je otworzyłem i przebudowałem rozwiązało problem.

Smakołyki
źródło
1

Jeśli ten błąd występuje jako część kompilacji w Azure DevOps (TFS), a twoja kompilacja ma już zadanie przywracania NuGet , ten błąd może wskazywać, że zadanie przywracania NuGet nie było w stanie przywrócić wszystkich pakietów, szczególnie jeśli używasz niestandardowego źródła pakietu ( takich jak wewnętrzny serwer NuGet). Dodanie /t:Restore;Builddo argumentów MSBuild wydaje się być jednym ze sposobów rozwiązania błędu, ale prosi to MSBuild o wykonanie dodatkowej operacji przywracania NuGet. Wierzę, że to się powiedzie, ponieważ MSBuild używa niestandardowego źródła pakietu skonfigurowanego w Visual Studio. Preferowanym rozwiązaniem jest naprawa zadania przywracania NuGet.

Aby skonfigurować niestandardowe źródło pakietu dla zadania przywracania NuGet:

  1. Utwórz NuGet.configplik z listą wszystkich źródeł pakietów (Microsoft Visual Studio Offline Packets, nuget.org i niestandardowe źródło pakietu) i dodaj go do kontroli źródła.
  2. W zadaniu przywracania Nuget w obszarze Kanały do ​​użycia: wybierz opcję Kanały w moim NuGet.config .
  3. Podaj ścieżkę do NuGet.config.
  4. Usuń /t:Restore;Buildopcję z zadania MSBuild.

Dodatkowe informacje są dostępne tutaj .

Jeremiah Mercier
źródło
0

Wystąpił błąd, gdy utworzyłem rdzeń lambda w kropce w VS2017. Dla mnie zadziałało rozładowanie projektu i załadowanie go z powrotem.

boms
źródło
0

uruchom VS jako administrator po tym, jak w konsoli menedżera pakietów uruchom przywracanie dotnet.

Lucas Brito
źródło
0

Inny, jeśli przypadkiem korzystasz z Dropbox, sprawdź Conflictednazwy plików, wyszukaj w repozytorium i usuń wszystkie konfliktowe pliki.

Może się tak zdarzyć, jeśli pliki zostały przeniesione.

Jose A.
źródło
0

Przyczyna tej wady: musisz usunąć wstrzyknięty Nuget w eksploratorze plików. Rozwiązanie: Po usunięciu tego Nuget w systemie, a następnie usuń z następującej lokalizacji. wybierz Narzędzie => Opcje => Menedżer pakietów NuGet => Źródła pakietów, a następnie odznacz opcję Pakiety offline programu Microsoft Visual Studio

balaji s
źródło
0

W moim przypadku miałem problem z dostępnymi źródłami pakietów. Przeniesiłem folder lokalnego repozytorium nugetu do nowej ścieżki, ale nie zaktualizowałem go w dostępnych źródłach pakietu Nuget. Kiedy naprawię problem ze ścieżką, zaktualizuj go w dostępnych źródłach pakietów, a potem wszystko (nuget restor itp.) Działało dobrze.

użytkownik11990436
źródło
0

Dla mnie okazało się, że jest to problem poświadczeń źródłowych. Niedawno zmieniłem hasło dostępu do serwera Nexus, a Visual Studio nadal używało starego hasła, próbując uzyskać dostęp do nugetu na tym serwerze za pośrednictwem menedżera poświadczeń systemu Windows. Aby to naprawić, musiałem usunąć wpis dotyczący tych nieaktualnych poświadczeń w menedżerze poświadczeń, a po przywróceniu nugetu poprosił mnie o hasło pozwalające wprowadzić nowe hasło, które zostało ponownie zapisane w menedżerze poświadczeń. Dostęp do menedżera referencji można uzyskać z wiersza cmd za pomocą CmdKey.exe.

John Volkya
źródło
0

Spróbuj tego (działało dla mnie):

  • Uruchom VS jako administrator
  • Aktualizacja ręczna NuGet do najnowszej wersji
  • Usuń wszystkie pliki bin i obj w projekcie.
  • Uruchom ponownie VS
  • Przekompiluj
dalfonsop
źródło
0

Możesz wybrać: Narzędzia> NuGet Package Manager> Konsola Menedżera pakietów

A następnie Uruchom:

przywracanie dotnet

siedem
źródło