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


262

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

Файл активов ~ \ obj \ project. assets.json ' не найден. Запустите восстановление пакета NuGet, чтобы создать этот файл. Nop.Web.MVC.Testsote

когда я использую правой кнопкой мыши решение и выбираю Восстановить пакеты Nuget, я получаю это сообщение:

Все пакеты уже установлены и восстанавливать нечего.

но эти 52 ошибки все еще есть, и в разделе Инструменты -> Диспетчер пакетов NuGet -> Управление пакетами NuGet для решения на этом решении ничего не установлено, также я недавно обновил свой VS2017 до 15.5.4


Вы дали согласие на восстановление NuGet? Перейдите к инструментам, параметрам, найдите NuGet и установите флажок «Разрешить NuGet ...».
бесы

Если кто-то работает на Mac, у нас была эта проблема, и мы устранили ее, удалив пробелы в пути к хранилищу (который был создан во время git pull): Мой% 20Project становится MyProject.
Дэвид Хейг

Ответы:


461

Чтобы исправить эту ошибку из Сервис> Диспетчер пакетов NuGet> Консоль диспетчера пакетов просто запустите:

dotnet restore

Ошибка возникает из-за того, что dotnet cli изначально не создает все необходимые файлы. Выполнение восстановления dotnet добавляет необходимые файлы.


21
Это было также исправлением для сервера сборки. Добавлен шаг командной строки для запуска «восстановления dotnet» после обычного восстановления NuGet.
Марк

24
Вы также можете сделать это из MSBuild: msbuild MySolution.sln / t: Restore
Der_Meister

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

16
@ Майкл, попробуйте msbuild MySolution.sln / t: восстановить; Build
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 и заменив ее обычным пространством, и все работает хорошо
hosam hemaily

42

В случае, если «восстановление dotnet» не работает, могут помочь следующие шаги:

  1. Visual Studio >> Инструменты >> Параметры >> Диспетчер Nuget >> Источники пакетов
  2. Не проверены любые сторонние источники пакетов.
  3. Восстановить решение.

3
Недавно я столкнулся с этой проблемой для Identity Server Quickstart # 1: Защита API с использованием учетных данных клиента, и вышеуказанное решение сработало для меня.
Таринду Джаясинге

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

Спасибо, вот и все!
19

33

Закрытие и повторное открытие Visual Studio решило эту проблему для меня, как только я убедился, что пакеты NuGet были восстановлены, как и другие ответы, опубликованные здесь.

Изменить: В некоторых случаях мне приходилось перезапускать Visual Studio сразу после другого перезапуска, поэтому не думайте, что перезапуск не поможет только потому, что вы недавно перезапустили.


Не могу поверить, что это сработало и для меня после восстановления dotnet и только после этого
Gaspa79

У меня были некоторые проблемы с подключением в моей рабочей локальной сети, которые мешали 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

Для меня, когда я сделал - dotnet restore все еще ошибка происходила.

я пошел в

1 Инструмент -> Менеджер пакетов NuGet -> Настройки диспетчера пакетов -> нажмите «Очистить в Nuget Catche (s)»

2 dotnet восстановление

решенные вопросы.


Я собираюсь попробовать это в следующий раз, когда это произойдет. Это может быть лучший подход , чем мой (закрыть и снова открыть VS) , который обычно занимает возраст для меня.
Выдающийся

6

В visual studio 2017, пожалуйста, выполните следующие действия:

1) выберите Tool => Options => NuGet Package Manager => Источники пакетов, затем снимите флажок Microsoft Visual Studio Offline Packages Option. введите описание изображения здесь

2) Теперь откройте Tool => NuGet Package Maneger => Консоль диспетчера пакетов. 3) выполнить команду в PM> dotnet restore.

Надеюсь, что это работает ...


6

Для меня я обновил NuGet.exe с 3.4 до 4.9, потому что 3.4 не понимает, как восстановить пакеты для .NET Core.

Для получения дополнительной информации см. Восстановление dotnet против восстановления nuget с teamcity


Да, я обнаружил это, когда мы начали перенос старых проектов .Net Framework в новый .csprojформат проекта.
StuartLC

5

Выберите Инструменты > Диспетчер пакетов NuGet > Консоль диспетчера пакетов.

А затем запустить:

dotnet restore <project or solution name>

3

немного поздно для ответа, но, кажется, это добавит ценность. Глядя на ошибку - кажется, это происходит в конвейере CI / CD.

Достаточно просто запустить «сборку dotnet».

дотнет билд

DotNet build выполняет «восстановление» по умолчанию.


1
Также это можно сделать, добавив шаг «.NET core» в конвейер (перед сборкой) и выбрав команду «dotnet restore» из выпадающего списка. Я говорю конкретно о трубопроводе VSTS здесь.
Лех Осински

3

Ничто из вышеперечисленного не помогло мне. Но простое удаление всех папок bin и obj помогло.


Эта проблема произошла для меня, когда я работал над Dockerfile. удаление этих папок привело к правильной работе dotnet-восстановления в контейнере.
Йоханнес


2

При использовании VSTS проверьте файл global.json. Я ввел версию SDK как просто «2.2», что вызвало ошибку разбора (но не при локальной сборке). Добавление полной версии «2.2.104» решило проблему.


2

Я потерял несколько часов из-за этой ошибки в DevOps Azure, когда установил задачу 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 в разделе Feeds to use: выберите опцию Feeds в моем NuGet.config .
  3. Укажите путь к NuGet.config.
  4. Удалите этот /t:Restore;Buildпараметр из задачи MSBuild.

Дополнительная информация доступна здесь .


1

Если простое восстановление пакетов NuGet не работает, убедитесь, что в меню « Инструменты» -> « Параметры» -> « Диспетчер пакетов NuGet» -> « Общие» в разделе « Восстановление пакетов» установлен флажок «Разрешить NuGet загружать отсутствующие пакеты».

Затем восстановите пакеты NuGet снова ИЛИ просто REBUILD после удаления папок obj и bin.


1

Если @ Мустафы-bouzari предложение не поможет, тщательно проверить в «списке ошибок» или «Output» окна для ошибок , почему NuGet не может восстановить, например , из - за чистую проблемой , если вы находитесь за прокси.


В моем случае, Nuget Restore не смог подключиться к нашему частному репозиторию NuGet, потому что я не был подключен к компании VPN. Помогла проверка журналов консоли диспетчера пакетов.
Александр Пучков

1

Эта проблема возникает, когда ваш инструмент сборки не настроен на выполнение restoreпроектов с использованием PackageReferencevs packages.configи в основном затрагивает проекты с новым стилем Net Core и Netstandard.

Когда вы открываете Visual Studio и собираете его, он решает эту проблему для вас. Но если вы используете автоматизацию, инструменты CLI, вы видите эту проблему.

Многие решения предлагаются здесь. Но все, что вам нужно запомнить, вам нужно заставить restore. В некоторых случаях вы используете dotnet restoreперед сборкой. Если вы строите с помощью MsBuild, просто добавьте /t:Restoreпереключатель в вашу команду.

В итоге, вам нужно понять, почему восстановление не может быть активировано. Либо неверный источник nuget, либо отсутствующее действие восстановления, либо устаревший файл 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 restore.


0

Другой, если вы случайно используете Dropbox, проверьте Conflictedимена файлов, выполните поиск в репозитории и удалите все эти конфликтующие файлы.

Это могло произойти, если вы переместили файлы.


0

Причина этого дефекта: вы должны удалить введенный Nuget в проводнике. Решение: Как только вы удалите этот Nuget в своей системе, затем удалите его из следующего места. выберите Инструмент => Параметры => Диспетчер пакетов NuGet => Источники пакетов, затем снимите флажок Автономные пакеты Microsoft Visual Studio



0

В моем случае у меня была проблема с доступными источниками пакетов. Мне пришлось переместить локальную папку репозитория Nuget на новый путь, но я не обновлял ее в доступных источниках пакетов Nuget. Когда я исправлю проблему пути, обновите ее в доступных источниках пакетов, и после этого все (восстановление Nuget и т. Д.) Работало нормально.


0

Для меня это оказалось проблемой с учетными данными. Недавно я изменил свой пароль для доступа к серверу Nexus, и Visual Studio все еще использовала старый пароль при попытке получить доступ к nuget на этом сервере через диспетчер учетных данных Windows. Чтобы исправить это, мне пришлось удалить запись для этих устаревших учетных данных в диспетчере учетных данных, и после того, как я сделал восстановление nuget, он запросил пароль, позволяющий мне ввести новый пароль, который снова был сохранен в диспетчере учетных данных. Вы можете получить доступ к диспетчеру учетных данных из строки cmd, используя CmdKey.exe.


0

Попробуйте это (это работало для меня):

  • Запустите VS от имени администратора
  • Обновление NuGet вручную до последней версии
  • Удалите все bin и obj файлы в проекте.
  • Перезагрузите VS
  • Рекомпилированные

0

Вы можете выбрать: Инструменты> Диспетчер пакетов NuGet> Консоль диспетчера пакетов.

А затем запустить:

восстановление dotnet

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.