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


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.


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

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.

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.


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.


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.


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 ...



5

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

A następnie Uruchom:

dotnet restore <project or solution name>

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”.


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”.


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


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.


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.


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.


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.


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.


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!


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.


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 .


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.


0

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


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.


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



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.


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.


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

0

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

A następnie Uruchom:

przywracanie dotnet

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.