Файл активів project.assets.json не знайдено. Запустіть відновлення пакету NuGet


262

Я намагаюся використовувати nopCommerce (що написано в .NET Core), але коли я хочу запустити проект, я стикаюся з 52 Помилками, які мені кажуть Запустити відновлення пакета

Файл активів ~ \ obj \ project. imovina.json ' не знайдено. Запустіть відновлення пакета NuGet, щоб створити цей файл. Nop.Web.MVC.Testsote

коли я користуюся правою кнопкою миші на рішенні та вибираючи Відновити Nuget Packages, я отримую це повідомлення:

Усі пакети вже встановлені, і відновити нічого немає.

але ці 52 помилки все ще є, і в Інструментах -> NuGet Package Manager -> Управління пакетами NuGet для вирішення нічого не встановлено в рішенні, також я нещодавно оновив свій VS2017 до 15.5.4


Ви надали згоду NuGet на відновлення? Перейдіть до інструментів, параметрів, знайдіть NuGet і поставте прапорець "Дозволити NuGet ...".
ІПУ

Якщо хтось працює на Mac, у нас виникла ця проблема та виправили її, видаливши пробіли у шляху сховища (який було створено під час витягування git): Мій% 20Project стає MyProject.
Девід Хейг

Відповіді:


459

Щоб виправити цю помилку за допомогою інструментів> NuGet Package Manager> Console Package Manager, просто запустіть:

dotnet restore

Помилка виникає через те, що дотнет-кліп спочатку не створює всі необхідні файли. Виконуючи відновлення точки, додайте необхідні файли.


21
Це також було виправлено для сервера збірки. Додано крок командного рядка для запуску "відновлення точки" після нормального відновлення NuGet.
Марк

24
Ви можете зробити це також з MSBuild: msbuild MySolution.sln / t: Відновлення
Der_Meister

3
@ Рішення Der_Meister додати параметр / t: Відновлення працював для мене, однак мені довелося скласти рішення двічі (два окремі етапи збирання). Спочатку з параметром / t: Відновлення, а потім знову без нього.
Майкл

16
@Michael, спробуйте msbuild MySolution.sln / t: Відновити; Будувати
Der_Meister

8
Якщо у вас є декілька файлів рішення, вам потрібно це зробитиdotnet restore solutionfilename.sln
ECH

97

У моєму випадку помилка була сховищем GIT. У назві були пробіли, завдяки чому мій проект не вдалося відновити

Якщо це ваша проблема, просто перейменуйте сховище GIT, коли ви клонуєте

git clone http://Your%20Project%20With%20Spaces newprojectname

6
Я думав собі, що це не може бути. Спробувавши ще годину інших запропонованих рішень, я нарешті спробував це з відчаю, і це вирішило мою проблему. Чортовий чоловік!
Старк

2
Це вирішило те, що у мене виникло, велике спасибі!
Шарбель

3
Ця відповідь повинна бути на початку публікації, а не в кінці. Вирішили мою проблему.
CodeWarrior

2
Ти врятував мій день! Дякую.
mpatel

3
у моєму випадку я просто перейменував свою фізичну папку, видаливши% 20 і замінивши її на звичайний простір, і вся справа працює добре
Хосам, hemaily

42

У випадку, коли "відновлення dotnet" не працює, наступні кроки можуть допомогти:

  1. Visual Studio >> Інструменти >> Параметри >> Nuget Manager >> Джерела пакунків
  2. Не знімайте будь-яких джерел пакетних пакетів.
  3. Відновити рішення.

3
Нещодавно я стикався з цією проблемою для сервера Identity Quickstart # 1: Захист API за допомогою облікових даних клієнта і вищевказане рішення працювало на мене.
Tharindu Jayasinghe

Дякую! Я фактично видалив одне джерело, яке вже не було актуальним (з іншого рішення), і на джерелах nuget.org.org та MSVS Offline Packages натиснув кнопку « Оновити ». Після цього dotnet restoreспрацювало.
CPHPython

Дякую, це було все!
tdracz

33

Закриття та повторне відкриття Visual Studio вирішило цю проблему для мене, як тільки я переконався, що пакети NuGet були відновлені відповідно до інших відповідей, розміщених тут.

Редагувати: У деяких випадках мені довелося перезапустити Visual Studio відразу після іншого перезавантаження, тому не вважайте, що перезапуск не допоможе лише тому, що ви нещодавно перезапустили.


Не можу повірити, що це працювало і для мене після відновлення
dotnet,

У мене в роботі локальної локальної мережі були деякі окремі проблеми підключення, які були гальмуючими для NuGet. Перезавантаження мого ПК вирішило проблему!
Нео

Це насправді не є відповіддю, оскільки іноді ви використовуєте інструменти CLI для getта, buildі ви не відкриваєте VS. Я знаю, чому це працює з VS - тому що VS автоматично вирішує залежність проекту.
TS

@TS питання з тегом «Visual Studio 2017 року», так що я б сказав , що це є відповіддю. Однак ви піднімаєте цікаву думку, що проблема полягає у вирішенні залежностей від VS. Якщо у вас є додаткова інформація про те, що відбувається не так, я впевнений, що це зробить цікавим читання
OutstandingBill

+1. Ти мене зловив! З VS, добре. Його версія 15.5 була баггі. Я думаю, що в 15.5 / 15.6 було багато питань для вирішення довідкових питань. Тепер ось відповідь stackoverflow.com/a/58548856/1704458
TS

20

Для тих, хто має таку саму проблему, як і я в середовищі Azure DevOps / VSTS, які стикаються з подібним повідомленням: 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

Додайте /t:Restoreдо своїх аргументів MSBuild в Build Solution.


9

Для мене, коли я робив - помилка відновлення дотнету все ж сталася.

Я пішов у

1 Інструмент -> NuGet Package Maneger -> Настройки диспетчера пакунків -> натисніть "Очистити в Nuget Catche (s)"

Відновлення 2 точок

вирішені питання.


Я спробую це наступного разу, коли це станеться. Це може бути кращим підходом, ніж мій (закрити і знову відкрити VS), який, як правило, займає віки для мене.
Видатний рахунок

6

У візуальній студії 2017 виконайте наступні дії:

1) виберіть Інструмент => Опції => Менеджер пакунків NuGet => Джерела пакунків, а потім зніміть прапорець Параметр « Офлайн пакети Microsoft Visual Studio» . введіть тут опис зображення

2) тепер відкрийте Tool => NuGet Package Maneger => Console Package Manager. 3) виконати команду в PM> відновити dotnet.

Сподіваюся, що це працює ...


6

Для мене я модернізував NuGet.exe з 3,4 до 4,9, оскільки 3,4 не розуміє, як відновити пакети для .NET Core.

Для детальної інформації див. Відновлення dotnet відновлення Nuget з командою


Так - я виявив це, коли ми почали мігрувати старі проекти .Net Framework на новий .csprojформат проекту.
StuartLC

5

Виберіть Інструменти > NuGet Package Manager > Console Package Manager

А потім запустіть:

dotnet restore <project or solution name>

3

трохи пізно до відповіді, але, здається, це додасть значення. Дивлячись на помилку - вона, здається, трапляється в конвеєрі CI / CD.

Достатньо просто запустити "збірку dotnet".

dotnet збірка

dotnet build запускає "відновлення" за замовчуванням.


1
Також можна досягти, додавши крок ".NET core" до конвеєра (перед збіркою) та вибравши команду "відновлення dotnet" зі спадного меню. Тут я конкретно говорю про трубопровід VSTS.
Lech Osiński

3

Ніщо вище для мене не працювало. Але просто видалення всіх папок "bin" та "obj" зробило свою справу.


Ця проблема трапилася для мене, коли я працював над Dockerfile. видалення цих папок змусило відновлення точки в контейнері належним чином.
Йоганнес


2

Під час використання VSTS перевірте свій файл global.json. Я ввійшов у версію sdk як просто "2.2", що спричинило помилку розбору (але не під час локальної побудови). Додавши повну версію, "2.2.104" вирішив проблему.


2

Я втратив кілька годин на цій помилці в Azure DevOps, коли я встановлював завдання "Visual Studio Build" в конвеєрі побудови, щоб створити індивідуальний проект у своєму рішенні, а не ціле рішення.

Це означає, що DevOps або не будує жодного (або, можливо, деяких, я не впевнений, на який) проект, на який посилається проект, на який ви орієнтувались, і тому ці проекти не матимуть свого project.json .генеруються файли .asset, що викликає цю проблему.

Рішення для мене полягало в тому, щоб переключитися з використання завдання VS Build на MSBuild. Використання завдання MSBuild для окремого проекту правильно будує будь-які проекти, на які посилається проект, який ви будуєте, і усуває цю помилку.


2

Якщо ця помилка виникає як частина збірки в Azure DevOps (TFS), і у вашій збірці вже є завдання відновлення NuGet , ця помилка може означати, що завдання відновлення NuGet не вдалося відновити всі пакети, особливо якщо ви використовуєте користувацьке джерело пакунків ( наприклад внутрішній сервер NuGet). Додавання/t:Restore;Build аргументів MSBuild, здається, є одним із способів усунення помилки, але це просить MSBuild виконати додаткову операцію відновлення NuGet. Я вважаю, що це вдається, оскільки MSBuild використовує користувацьке джерело пакунків, налаштоване у Visual Studio. Кращим рішенням є виправлення завдання відновлення NuGet.

Щоб налаштувати спеціальне джерело пакету для завдання відновлення NuGet:

  1. Створити NuGet.config файл, у якому перераховані всі джерела пакунків (офлайн-пакети Microsoft Visual Studio, nuget.org та власне джерело пакунків) та додайте його до керування джерелами.
  2. У завданні відновлення Nuget у розділі канали для використання: виберіть опцію " Канали" в моєму NuGet.config .
  3. Надайте шлях до NuGet.config.
  4. Видаліть /t:Restore;Buildпараметр із завдання MSBuild.

Додаткову інформацію можна отримати тут .


1

Якщо просто відновлення пакунків NuGet не працює, переконайтеся, що в Інструментах -> Параметри -> Менеджер пакетів NuGet -> Загальне під час відновлення пакунків встановлено прапорець "Дозволити NuGet завантажувати відсутні пакети".

Потім знову відновіть пакети NuGet АБО просто ПОВЕРНУТИСЯ після видалення папок obj та bin.


1

Якщо @ mostafa-bouzari пропозиція не допоможе, ретельно перевірити в «списку помилок» або «Output» вікна для помилок , чому NuGet не може відновити, наприклад , з - за чисту проблемою , якщо ви перебуваєте за проксі.


У моєму випадку Nuget Restore не вдалося підключитися до нашого приватного сховища NuGet, оскільки я не був підключений до VPN компанії. Перевірка журналів консолей менеджера пакунків допомогла.
Олександр Пучков

1

Ця проблема виникає, коли інструмент збирання не налаштовано restoreна проекти, встановлені на використання PackageReferencevspackages.config і в основному впливає Net Core та Netstandard в новому стилі.

Коли ви відкриєте Visual Studio і побудуєте, це вирішить для вас. Але якщо ви використовуєте автоматизацію, інструменти CLI, ви бачите цю проблему.

Тут пропонується багато рішень. Але все, що потрібно пам’ятати, потрібно змусити restore. У деяких випадках ви використовуєте dotnet restoreперед збіркою. Якщо ви будуєте за допомогою MsBuild, просто додайте /t:Restoreперемикач до вашої команди.

Знизу ви повинні зрозуміти, чому відновлення неможливо активувати. Або неправильне джерело нута, або відсутня дія відновлення, або застарілий nuget.exe, або все вищезазначене.


1

Дуже дивний досвід, з яким я стикався!

Я раніше клонував з GIT bash та GIT cmd-Line раніше, я стикався з вищезазначеними проблемами.

Пізніше я клонував з Tortoise-GIT і все працювало так, як очікувалося.

Можливо, це шалена відповідь, але спробувати це один раз може заощадити ваш час!


1

Видно це, додавши проект WinForms Core 3.1 (із шаблонів проектів) на VS-2019 проти 16.4.0 та намагаючись запустити його з коробки. Очистити або відновити все рішення не вийшло.

Я просто перезавантажив своє рішення .. це рішення File / Close Solution, а потім повторно відкрити його та відновити його вирішив проблему.


0

Я отримав помилку, коли створив лямбда в точковому ядрі в VS2017. Що для мене спрацювало - розвантажити проект і завантажити його назад.


0

запустіть свій VS як адміністратор після цього в консолі менеджера пакунків запустіть відновлення dotnet.


0

Ще один, якщо ви випадково використовуєте Dropbox, Conflictedзнайдіть імена файлів, проведіть пошук у вашому репо-репортажі та видаліть усі ці конфліктні файли.

Це може статися, якщо ви перемістили файли.


0

Причина цього дефекту: вам доведеться видалити вбудований Nuget у файл Explorer. Рішення. Після того, як ви видалите цей Nuget у своїй системі, тоді видаліть із наступного місця. виберіть Інструмент => Опції => Менеджер пакунків NuGet => Джерела пакунків, а потім зніміть прапорець Параметр "Офлайн пакети" Microsoft Visual Studio



0

У моєму випадку у мене виникли проблеми з доступними джерелами пакунків. Я перемістив локальну папку логічного сховища на новий шлях, але я не оновлював її в Nuget Available Package Source. Коли я виправлю проблему шляху, оновіть його у доступних джерелах пакету, і після цього все (відновлювач нута тощо) працював нормально.


0

Для мене це виявилося проблемою з обліковими записами джерела власного джерела. Нещодавно я змінив свій пароль для доступу до nexus-сервера, а візуальна студія все ще використовувала старий пароль при спробі отримати доступ до нута на цьому сервері через менеджер даних Windows. Щоб виправити це, мені довелося видалити запис для цих застарілих облікових даних у менеджері облікових даних, і після того, як я здійснив відновлення нута, він запропонував мені пароль, щоб дозволити мені ввести новий пароль, який знову було збережено в менеджері облікових даних. Ви можете отримати доступ до менеджера облікових даних з рядка cmd за допомогою CmdKey.exe.


0

Спробуйте це (це працювало для мене):

  • Запустіть VS як адміністратор
  • Вручну оновіть NuGet до останньої версії
  • Видаліть усі файли bin та obj в проекті.
  • Перезапустіть VS
  • Перекомпілюйте

0

Можна скористатися: Інструменти> NuGet Package Manager> Console Package Manager

А потім запустіть:

відновлення точки

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.