Netsdk1004 файл ресурсов не найден восстановите пакет nuget чтобы создать его
Я зарегистрировался в проекте на одном компьютере, проверил на другом и обнаружил, что двоичные файлы, установленные NuGet, отсутствуют. Я мог бы также проверить их в системе контроля версий, но, похоже, есть лучшее решение:
Я следовал этим инструкциям, теперь у меня есть .nuget папка, в которой нужно находиться, и в моем файле .csproj есть следующие записи:
и все же, когда я перестраиваю свое решение, отсутствующие пакеты не восстанавливаются.
Чего мне не хватает? Как я могу диагностировать эту проблему?
Обратите внимание, что вы можете принудительно выполнить восстановление пакета, выполнив следующие команды в консоли диспетчера пакетов nuget
Принудительно переустанавливает все в решении.
Пакет обновлений -Переустановите -ProjectName myProj
Принудительно переустанавливает все в проекте myProj.
Примечание : это ядерный вариант. При использовании этой команды вы можете не получить те же версии установленных пакетов, что может привести к проблемам. Это реже происходит на уровне проекта, чем на уровне решения.
Вы можете использовать -safe параметр параметра командной строки, чтобы ограничить обновления до более новых версий с одним и тем же компонентом Major и Minor версии. Эта опция была добавлена позже и решает некоторые проблемы, упомянутые в комментариях.
Пакет обновлений -Переустановить -Safe
@ NightOwl888, что звучит как что-то, о чем нужно сообщать в nuget, потому что не должно быть никакого способа, которым он мог бы это сделать, если, возможно, у вас не было проблем с связыванием ада DLL, и, к счастью, это работало, но переустановка его положила конец вашей удаче.
Основным недостатком здесь является то, что версии пакетов не поддерживаются, поэтому будет установлена последняя версия пакета. Это может быть проблемой, если ваш проект не совместим с новой версией ..
Да, пакет обновлений -Переустановка работает для меня. Я понятия не имею, почему IDE просто не делает этого. Все настроено правильно. Тьфу, клянусь, NuGet и хорош, и раздражает.
Для тех, кто наткнулся на этот пост, прочитайте это.
NuGet 2.7+ познакомил нас с автоматическим восстановлением пакетов . Это считается гораздо лучшим подходом для большинства приложений, поскольку он не вмешивается в процесс MSBuild. Меньше головных болей.
Некоторые ссылки для начала:
Вы должны выбрать один из следующих способов:
Переустановка пакета по его имени во всех проектах решения:
Переустановка пакета по имени и игнорирование его зависимостей во всех проектах решения:
Переустановка пакета по его имени в проекте:
Переустановка всех пакетов в конкретном проекте:
Переустановка всех пакетов в решении:
Вы включили режим восстановления пакетов в проекте, в котором отсутствуют недостающие пакеты / двоичные файлы? Существует известная проблема, которая требует правильной установки пакетов при включении режима восстановления:
Спасибо за ссылку. Включение режима восстановления пакетов в проекте, в котором отсутствуют недостающие пакеты / двоичные файлы, будет обычным делом. Если у вас нет пакетов, тогда вы захотите их получить. Сбой в случае использования.
Когда вы говорите «включить режим восстановления пакетов в проекте, в котором отсутствуют пакеты», что вы имеете в виду? Есть ли консольная команда, которую мне нужно выполнить, чтобы сделать это?
Инструменты> Диспетчер пакетов NuGet> Настройки диспетчера пакетов> Общие Нажмите «Очистить все кэш-память NuGet»
При выводе решения из-под контроля исходного кода (управляемого с помощью Visual Studio Team Explorer с DevOps / Git) сборки были невозможны из-за отсутствия ссылок, а пакеты восстановления ничего не делали. Это решение было правильным для этого обстоятельства.
Я столкнулся с этой проблемой в двух сценариях.
Во-первых, когда я пытаюсь построить свое решение из командной строки, используя msbuild.exe. Во-вторых, когда я пытаюсь собрать sln и содержащие проекты на моем сервере сборки, используя TFS и CI.
Я включил восстановление пакетов через VS2010, и я видел, что сборки работают только из VS2010. Опять же, использование msbuild fails. Мой обходной путь, вероятно, совершенно недопустим, но для моей среды это все работает как из локальной командной строки, так и из сборки CI в TFS.
Я вошел в. \ Nuget и изменил эту строку в файле .nuget \ NuGet.targets:
to: (обратите внимание, без кавычек вокруг переменных)
Я понимаю, что если в моих каталогах есть пробелы, это не получится, но у меня нет пробелов в моих каталогах, и поэтому этот обходной путь заставил мои сборки завершиться успешно . на данный момент.
Я скажу, что включение регистрации уровня диагностики в вашей сборке поможет показать, какие команды выполняет msbuild. Это то, что заставило меня временно взломать файл целей.
У меня была проблема с двойными кавычками, и мне пришлось сделать то же редактирование, что и вы. Очень расстраивает!
Если что-то еще не работает, попробуйте:
- Закрыть проект.
- Удалите папку пакетов в папке вашего решения.
- Снова откройте Project и снова восстановите Nugget Packages.
Работал на меня, и это легко попробовать.
Это сработало для меня. На шаге 3 мне не нужно было вручную восстанавливать пакеты - они восстанавливались автоматически при открытии проекта.
Найдите свой .csproj файл и отредактируйте его в текстовом редакторе.
Переустановите все пакеты в решении:
После этого ваши пакеты nuget должны быть восстановлены, я думаю, что это может быть незначительный случай, который происходит только тогда, когда вы перемещаете свой проект в другое место.
Просто для других, которые могут столкнуться с этой проблемой, я смог решить проблему, закрыв Visual Studio и снова открыв проект. Когда проект был загружен, пакеты были восстановлены на этапе инициализации.
Для меня у меня был пустой тег NuGetPackageImportStamp в .csproj
В идеале он должен содержать некоторый действительный идентификатор GUID.
Удаление вышеупомянутого тега и затем «Восстановление Nugets» работало для меня.
Иногда происходит что-то странное, и использование Visual Studio для автоматического восстановления не работает. В этом случае вы можете использовать консоль диспетчера пакетов NuGet. Это открывается в Visual Studio из Сервис -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов . Команды в консоли просты. А чтобы получить контекстную помощь при вводе команды, просто нажмите кнопку, и она предоставит вам все опции, которые начинаются с букв, которые вы вводите. Поэтому, если пакет не установлен, например, log4net, введите следующую команду:
Инсталляционный пакет log4net
Вы можете сделать намного больше, например указать версию для установки, обновить пакет, удалить пакет и т. Д.
Я должен был использовать консоль, чтобы помочь мне, когда Visual Studio вел себя как чудак.
Автоматическое восстановление пакета не будет выполнено по одной из следующих причин:
- Вы не удалили файлы NuGet.exe и NuGet.targets из папки решения .nuget (которую можно найти в корневой папке решения)
- Вы не включили автоматическое восстановление пакета в меню Инструменты >> Параметры >> Диспетчер пакетов Nuget >> Общие параметры.
- Вы забыли вручную удалить ссылки во всех ваших проектах в файл Nuget.targets
- Вам нужно перезапустить Visual Studio (убедитесь, что процесс убит из вашего диспетчера задач перед повторным запуском).
Лучший обходной путь, который я нашел, - создать новый проект с нуля, а затем импортировать все исходные файлы с кодом. Мой проект не был таким сложным, поэтому у меня не было никаких проблем.
This article focuses on common errors when restoring packages and steps to resolve them.
Package Restore tries to install all package dependencies to the correct state matching the package references in your project file (.csproj) or your packages.config file. (In Visual Studio, the references appear in Solution Explorer under the Dependencies \ NuGet or the References node.) To follow the required steps to restore packages, see Restore packages. If the package references in your project file (.csproj) or your packages.config file are incorrect (they do not match your desired state following Package Restore), then you need to either install or update packages instead of using Package Restore.
If the instructions here do not work for you, please file an issue on GitHub so that we can examine your scenario more carefully. Do not use the "Is this page helpful?" control that may appear on this page because it doesn't give us the ability to contact you for more information.
Другие потенциальные условия
При получении проекта из системы управления версиями папки вашего проекта могут быть сделаны доступными только для чтения. Измените разрешения для папок и попробуйте восстановить пакеты еще раз.
При возникновении других проблем сообщите о них на GitHub, чтобы мы могли получить у вас дополнительные сведения.
Все пакеты уже установлены и восстанавливать нечего.
но эти 52 ошибки все еще есть, и в разделе Инструменты -> Диспетчер пакетов NuGet -> Управление пакетами NuGet для решения на этом решении ничего не установлено, также я недавно обновил свой VS2017 до 15.5.4
Вы дали согласие на восстановление NuGet? Перейдите к инструментам, параметрам, найдите NuGet и установите флажок «Разрешить NuGet . ».
Если кто-то работает на Mac, у нас была эта проблема, и мы устранили ее, удалив пробелы в пути к хранилищу (который был создан во время git pull): Мой% 20Project становится MyProject.
Ошибка возникает из-за того, что dotnet cli изначально не создает все необходимые файлы. Выполнение восстановления dotnet добавляет необходимые файлы.
Это было также исправлением для сервера сборки. Добавлен шаг командной строки для запуска «восстановления dotnet» после обычного восстановления NuGet.
Решение @ Der_Meister по добавлению опции / t: Restore сработало для меня, однако мне пришлось построить решение дважды (два отдельных этапа сборки). Сначала с параметром / t: Restore, а затем снова без него.
В моем случае ошибка была в GIT-хранилище. В названии были пробелы, поэтому мой проект не удалось восстановить
Если это ваша проблема, просто переименуйте репозиторий GIT при клонировании
Я подумал про себя, что это не может быть. Попробовав еще один час с другими предлагаемыми решениями, я наконец испытал это от отчаяния, и это решило мою проблему. Черт возьми!
в моем случае я просто переименовал свою физическую папку, удалив% 20 и заменив ее обычным пространством, и все работает хорошо
В случае, если «восстановление dotnet» не работает, могут помочь следующие шаги:
- Visual Studio >> Инструменты >> Параметры >> Диспетчер Nuget >> Источники пакетов
- Не проверены любые сторонние источники пакетов.
- Восстановить решение.
Закрытие и повторное открытие Visual Studio решило эту проблему для меня, как только я убедился, что пакеты NuGet были восстановлены, как и другие ответы, опубликованные здесь.
Изменить: В некоторых случаях мне приходилось перезапускать Visual Studio сразу после другого перезапуска, поэтому не думайте, что перезапуск не поможет только потому, что вы недавно перезапустили.
У меня были некоторые проблемы с подключением в моей рабочей локальной сети, которые мешали NuGet. Перезагрузка моего ПК решила проблему!
Это на самом деле не ответ , потому что иногда вы используете CLI инструменты get и build и вы не раскрываем VS. Я знаю, почему он работает с VS - потому что VS автоматически разрешает зависимости проекта.
@TS вопрос с тегом «Visual Studio 2017 года», так что я бы сказал , что это является ответом. Вы поднимаете интересный момент, однако, что проблема заключается в разрешении VS-зависимостей. Если у вас есть больше информации о том, что идет не так, я уверен, что это будет интересно читать
Добавьте /t:Restore к своим MSBuild Аргументы в Build Solution.
Для меня, когда я сделал - dotnet restore все еще ошибка происходила.
1 Инструмент -> Менеджер пакетов NuGet -> Настройки диспетчера пакетов -> нажмите «Очистить в Nuget Catche (s)»
2 dotnet восстановление
Я собираюсь попробовать это в следующий раз, когда это произойдет. Это может быть лучший подход , чем мой (закрыть и снова открыть VS) , который обычно занимает возраст для меня.
В visual studio 2017, пожалуйста, выполните следующие действия:
1) выберите Tool => Options => NuGet Package Manager => Источники пакетов, затем снимите флажок Microsoft Visual Studio Offline Packages Option.
2) Теперь откройте Tool => NuGet Package Maneger => Консоль диспетчера пакетов. 3) выполнить команду в PM> dotnet restore.
Надеюсь, что это работает .
Выберите Инструменты > Диспетчер пакетов NuGet > Консоль диспетчера пакетов.
А затем запустить:
немного поздно для ответа, но, кажется, это добавит ценность. Глядя на ошибку - кажется, это происходит в конвейере CI / CD.
Достаточно просто запустить «сборку dotnet».
DotNet build выполняет «восстановление» по умолчанию.
Ничто из вышеперечисленного не помогло мне. Но простое удаление всех папок bin и obj помогло.
Эта проблема произошла для меня, когда я работал над Dockerfile. удаление этих папок привело к правильной работе dotnet-восстановления в контейнере.
Решается добавлением / t: Restore; Build to MSBuild Аргументы
При использовании VSTS проверьте файл global.json. Я ввел версию SDK как просто «2.2», что вызвало ошибку разбора (но не при локальной сборке). Добавление полной версии «2.2.104» решило проблему.
Я потерял несколько часов из-за этой ошибки в DevOps Azure, когда установил задачу Visual Studio Build в конвейере сборки, чтобы построить отдельный проект в моем решении, а не в целом решении.
Это означает, что DevOps либо не создает ни один (или, возможно, некоторые, я не уверен, какой) из проектов, на которые ссылается проект, на который вы нацелены для сборки, и, следовательно, эти проекты не будут иметь свой project.json. сгенерированные файлы .asset, которые затем вызывают эту проблему.
Решением для меня было переключиться с использования задачи VS Build на задачу MSBuild. Использование задачи MSBuild для отдельного проекта правильно создает все проекты, на которые ссылается создаваемый вами проект, и устраняет эту ошибку.
Если эта ошибка возникает как часть сборки в Azure DevOps (TFS), и ваша сборка уже имеет задачу восстановления NuGet , эта ошибка может указывать на то, что задача восстановления NuGet не смогла восстановить все пакеты, особенно если вы используете собственный источник пакета ( такой как внутренний сервер NuGet). Добавление /t:Restore;Build к аргументам MSBuild, кажется, является одним из способов устранения ошибки, но при этом MSBuild просит выполнить дополнительную операцию восстановления NuGet. Я считаю, что это успешно, потому что MSBuild использует пользовательский источник пакета, настроенный в Visual Studio. Предпочтительным решением является исправление задачи восстановления NuGet.
Чтобы настроить собственный источник пакета для задачи восстановления NuGet:
Ограничение версий пакетов при восстановлении
Когда NuGet восстанавливает пакеты любым из методов, учитываются все ограничения, указанные в packages.config или файле проекта:
В файле packages.config , вы можете указать диапазон версий в свойстве allowedVersion зависимости. Дополнительные сведения см. в статье Ограничение версий при обновлении. Пример:
В файле проекта вы можете указать диапазон для зависимости напрямую, используя PackageReference. Пример:
Во всех случаях используйте нотацию, описанную в статье Управление версиями пакета.
Выбор формата управления пакетами по умолчанию
У NuGet есть два формата, в которых пакеты могут использоваться в проекте: PackageReference и packages.config . Формат по умолчанию можно выбрать в раскрывающемся списке под заголовком Управление пакетами. Также доступен параметр, позволяющий выводить запрос при установке первого пакета в проекте.
Если проект не поддерживает оба формата управления пакетами, используется формат, совместимый с данным проектом, поэтому он может отличаться от установленного по умолчанию в параметрах. Кроме того, NuGet не будет запрашивать выбор при установке первого пакета, даже если соответствующий параметр выбран в окне "Параметры".
Если консоль диспетчера пакетов используется для установки первого пакета в проекте, NuGet не будет запрашивать выбор формата, даже если соответствующий параметр выбран в окне "Параметры".
Восстановление с помощью nuget.exe в CLI
Используйте команду restore, которая скачивает и устанавливает любые отсутствующие пакеты из папки packages.
Для проектов, перенесенных в PackageReference, используйте msbuild -t:restore для восстановления пакетов.
Команда restore добавляет пакеты на диск, но не изменяет список зависимых компонентов проекта. Чтобы восстановить зависимые компоненты пакета, измените файл packages.config и затем выполните команду restore .
Как и с другими командами CLI nuget.exe , откройте командную строку и перейдите к каталогу, в котором находится файл проекта.
Восстановление пакета с помощью restore .
Команда restore не изменяет файл проекта или файл restore . Чтобы добавить зависимость, добавьте пакет с помощью пользовательского интерфейса диспетчера пакетов или консоли в Visual Studio, либо измените файл packages.config и затем выполните команду или restore .
Восстановление пакетов вручную с помощью Visual Studio
Включите восстановление пакетов, выбрав Средства Параметры Диспетчер пакетов NuGet. В разделе Восстановление пакетов щелкните Разрешить NuGet скачивать отсутствующие пакеты.
Щелкните правой кнопкой мыши решение в обозревателе решений и выберите Восстановить пакеты NuGet.
Если какие-либо пакеты по-прежнему установлены некорректно, в обозревателе решений отображается значок ошибки. Щелкните правой кнопкой мыши и выберите Управление пакетами NuGet, а затем удалите и переустановите затронутые пакеты с помощью диспетчера пакетов. Дополнительные сведения см. в статье Переустановка и обновление пакетов.
Если отображается ошибка "Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере" или "Необходимо восстановить один или несколько пакетов NuGet, однако это невозможно без вашего согласия", включите автоматическое восстановление. Для более старых проектов см. инструкции по переходу на автоматическое восстановление пакетов. Дополнительные сведения см. в статье Устранение ошибок при восстановлении пакетов.
Файл ресурсов project.assets.json не найден
Если используется формат управления PackageReference, который проверяет, установлены ли на компьютере все необходимые пакеты, в файле project.assets.json определена схема зависимостей проекта. Этот файл создается динамически во время восстановления пакета. Поэтому он обычно не добавляется в систему управления версиями. В результате эта ошибка возникает при попытке выполнить сборку проекта с помощью такого средства, как msbuild , которое не восстанавливает пакеты автоматически.
В этом случае запустите msbuild -t:restore и затем msbuild или используйте dotnet build (при этом пакеты восстанавливаются автоматически). Кроме того, вы можете использовать любой из методов восстановления пакетов, описанных в предыдущем разделе.
One or more NuGet packages need to be restored but couldn't be because consent has not been granted
Complete error message:
This error indicates that package restore is disabled in your NuGet configuration.
You can change the applicable settings in Visual Studio as described earlier under Quick solution for Visual Studio users.
You can also edit these settings directly in the applicable nuget.config file (typically %AppData%\NuGet\NuGet.Config on Windows and ~/.nuget/NuGet/NuGet.Config on Mac/Linux). Make sure the enabled and automatic keys under packageRestore are set to True:
If you edit the packageRestore settings directly in nuget.config , restart Visual Studio so that the options dialog box shows the current values.
Восстановление с помощью dotnet в CLI
Как и с другими командами CLI dotnet , откройте командную строку и перейдите к каталогу, в котором находится файл проекта.
Восстановление пакета с помощью dotnet restore .
Чтобы добавить отсутствующую ссылку на пакет в файл проекта, используйте средство dotnet add package, которое также выполняет команду .
Восстановление с помощью MSBuild
С помощью команды msbuild -t:restore вы можете восстановить пакеты, включенные в файл проекта (см. раздел о PackageReference), и проекты (начиная с версии MSBuild 16.5).
Эта команда доступна только в NuGet версии 4.x и более поздних и MSBuild версии 15.1 и более поздних, включенных в Visual Studio 2017 и более поздних версий. В MSBuild 16.5 и более поздних версий эта команда может также восстанавливать проекты на основе packages.config при запуске с параметром -p:RestorePackagesConfig=true .
Откройте Командную строку разработчика (в поле поиска введите Командная строка разработчика).
В общем случае следует запустить Командную строку разработчика для Visual Studio из меню Пуск, так как в этом случае настраиваются все необходимые пути для MSBuild.
Перейдите в папку, содержащую файл проекта, и введите следующую команду.
Введите следующую команду, чтобы перестроить проект.
Убедитесь, что выходные данные MSBuild показывают, что сборка выполнена успешно.
В MSBuild существует параметр -restore , который позволяет выполнить команду Restore , загрузить проект снова, а затем выполнить сборку. См. раздел Восстановление и сборка с помощью одной команды MSBuild.
Обзор восстановления пакетов
Функция восстановления пакетов сначала устанавливает необходимые прямые зависимости проекта, а затем остальные зависимости этих пакетов во всей схеме зависимостей.
Если пакет не установлен, NuGet сначала попытается извлечь его из кэша. Если пакет отсутствует в кэше, NuGet пытается скачать его из всех источников, которые включены в списке в разделе Средства Параметры Диспетчер пакетов NuGet Источники пакетов в Visual Studio. Во время восстановления NuGet игнорирует порядок источников пакетов, используя пакет из любого источника, первым ответившего на запросы. Дополнительные сведения о поведении NuGet см. в статье Распространенные конфигурации NuGet.
NuGet не сообщает о сбое восстановления пакета до проверки всех источников. После проверки NuGet сообщает о сбое только для последнего источника в списке. Такая ошибка означает, что пакет отсутствовал и во всех других источниках, хотя отдельные ошибки для них не выдавались.
Восстановление с помощью Azure DevOps Server
В Azure DevOps Server и TFS 2013 и более поздних версий пакеты восстанавливаются автоматически во время сборки при условии, что вы используете шаблон командной сборки для TFS 2013 или более поздней версии. В более ранних версиях TFS вы можете включить в процесс сборки этап, на котором будет выполняться команда восстановления из командной строки, а также при необходимости перенести шаблон сборки в более позднюю версию. Дополнительные сведения см. в статье Настройка восстановления пакетов с помощью сборки Team Foundation.
Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере
Эта ошибка возникает при попытке выполнить сборку проекта, содержащего ссылки на один или несколько пакетов NuGet, которые сейчас не установлены на компьютере или в проекте.
- При использовании формата управления PackageReference эта ошибка может быть следствием миграции packages.config в PackageReference, и это необходимо вручную удалить из файла проекта.
- Если используется файл packages.config эта ошибка означает, что пакет не установлен в папке в корне решения.
Эта ошибка также может возникнуть, если файл проекта содержит абсолютные пути для расположений пакетов и вы перемещаете этот проект.
Для восстановления пакетов используйте один из следующих методов.
- После перемещения файла проекта отредактируйте его напрямую, чтобы обновить ссылки на пакеты. (автоматическое восстановление или восстановление вручную)
После восстановления пакет должен присутствовать в папке global-packages. В проектах, использующих формат PackageReference, в процессе восстановления повторно создается файл obj/project.assets.json , а в проектах, использующих файл packages.config , пакет должен появиться в папке packages . Теперь сборка проекта должна пройти без ошибок. В противном случае сообщите о проблеме на GitHub, чтобы мы могли связаться с вами.
Быстрое решение для пользователей Visual Studio
Если вы используете Visual Studio, сначала включите восстановление пакета, как описано ниже. В противном случае перейдите к приведенным далее разделам.
Эти параметры также можно изменить в файле NuGet.Config ; см раздел о NuGet.Config . Для достаточно ранних проектов, использующих встроенную в MSBuild функцию восстановление пакетов, возможно, потребуется перейти на автоматическое восстановление пакетов.
Восстановление с помощью Visual Studio
В Visual Studio в Windows выполните одно из следующих действий:
восстановите пакеты автоматически;
восстановите пакеты вручную.
This project references NuGet package(s) that are missing on this computer
Complete error message:
This error occurs when you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently installed on the computer or in the project.
- When using the PackageReference management format, this error might be a leftover from a packages.config to PackageReference migration and needs to be manually removed from the project file.
- When using packages.config, the error means that the package is not installed in the packages folder at the solution root.
The error can also happen if your project file contains absolute paths to package locations, and you move the project.
Use one of the following methods to restore the packages:
- If you've moved the project file, edit the file directly to update the package references. (automatic restore or manual restore)
After a successful restore, the package should be present in the global-packages folder. For projects using PackageReference, a restore should recreate the obj/project.assets.json file; for projects using packages.config , the package should appear in the project's packages folder. The project should now build successfully. If not, file an issue on GitHub so we can follow up with you.
Assets file project.assets.json not found
Complete error message:
The project.assets.json file maintains a project's dependency graph when using the PackageReference management format, which is used to make sure that all necessary packages are installed on the computer. Because this file is generated dynamically through package restore, it's typically not added to source control. As a result, this error occurs when building a project with a tool such as msbuild that does not automatically restore packages.
In this case, run msbuild -t:restore followed by msbuild , or use dotnet build (which restores packages automatically). You can also use any of the package restore methods in the previous section.
Восстановление пакетов
Функция восстановления пакетов пытается установить все зависимости пакетов в правильном состоянии с учетом ссылок на пакет в файле проекта ( .csproj) или файле packages.config. (В Visual Studio ссылки отображаются в обозревателе решений в узле Зависимости \ NuGet или Ссылки.)
Если ссылки на пакет в файле проекта правильные, используйте привычное средство для восстановления пакетов.
Если ссылки на пакет в файле проекта ( .csproj) или packages.config неправильные (не соответствуют требуемому состоянию после восстановления пакета), необходимо установить или обновить пакеты.
Если для проектов используется PackageReference, после успешного восстановления пакет должен присутствовать в global-packages, а файл будет создан повторно. Если для проектов используется packages.config , пакет должен отображаться в папке packages проекта. Теперь сборка проекта должна пройти без ошибок.
Если после запуска функции восстановления пакетов пакеты по-прежнему отсутствуют или появляются связанные с пакетами ошибки (например, значки ошибок в обозревателе решений в Visual Studio), следуйте инструкциям, описанным в разделе Устранение ошибок при восстановлении пакетов, или попробуйте переустановить и обновить пакеты.
В Visual Studio консоль диспетчера пакетов позволяет переустанавливать пакеты несколькими способами. См. об использовании Package-Update.
Переход на автоматическое восстановление пакетов (Visual Studio)
Диспетчер NuGet 2.6 и более ранних версий ранее поддерживал функцию восстановления пакетов, интегрированную в MSBuild. Но теперь такая функция недоступна (обычно, чтобы включить ее, нужно было щелкнуть правой кнопкой мыши решение в Visual Studio и выбрать Включить восстановление пакетов NuGet) Если в проекте используется устаревшая функция восстановления пакетов, встроенная в MSBuild, перейдите на автоматическое восстановление пакетов.
В проектах, где используется функция восстановления пакетов, встроенная в MSBuild, обычно есть папка .nuget с тремя файлами: NuGet.config, nuget.exe и NuGet.targets. Наличие файла NuGet.targets определяет, будет ли NuGet и дальше использовать встроенный в MSBuild метод. Поэтому этот файл необходимо удалить во время миграции.
Переход на автоматическое восстановление пакетов:
- Закройте Visual Studio.
- Удалите .nuget/nuget.exe и .nuget/NuGet.targets.
- Для каждого файла проекта удалите элемент и любые ссылки на .
Тестирование автоматического восстановления пакетов:
Удалите папку из решения папку packages.
Откройте решение в среде Visual Studio и начните сборку.
При автоматическом восстановлении пакетов должен скачиваться и устанавливаться каждый пакет зависимостей без добавления таких пакетов в систему управления версиями.
Эта статья посвящена распространенным ошибкам, возникающим при восстановлении пакетов, и мерам по их устранению.
Функция восстановления пакетов пытается установить все зависимости пакетов в правильном состоянии с учетом ссылок на пакет в файле проекта ( .csproj) или файле packages.config. (В Visual Studio ссылки отображаются в обозревателе решений в узле Зависимости \ NuGet или Ссылки.) См. о восстановлении пакетов. Если пакет ссылается на файл проекта( .csproj) или если файл packages.config неправильный (не соответствует требуемому состоянию после восстановления пакета), необходимо установить или обновить пакеты. Не используйте вместо этого функцию восстановления пакетов.
Если приведенные здесь инструкции не работают, сообщите о проблеме на GitHub, чтобы мы могли тщательнее изучить ваш случай. Не используйте элемент управления "Была ли эта страница полезной?", который может отображаться на этой странице, так как это не позволяет нам связаться с вами для получения дополнительной информации.
Включение и отключение восстановления пакетов с помощью Visual Studio
В Visual Studio для управления восстановлением пакетов используются преимущественно параметры в разделе Средства Параметры Диспетчер пакетов NuGet:
Параметр Разрешить NuGet скачивать отсутствующие пакеты определяет все формы восстановления пакетов посредством изменения параметра в разделе packageRestore файла в каталоге %AppData%\NuGet\ в Windows или ~/.nuget/NuGet/ в Mac/Linux. Этот параметр также обеспечивает работу команды Восстановить пакеты NuGet в контекстном меню решения в Visual Studio.
Параметр packageRestore/enabled можно переопределить на глобальном уровне, задав для переменной среды с именем packageRestore/enabled значение True или False перед запуском Visual Studio или началом сборки.
Параметр Автоматически проверять отсутствие пакетов при сборке в Visual Studio управляет автоматическим восстановлением путем изменения параметра в разделе packageRestore файла . Когда этот параметр имеет значение True, при запуске сборки из Visual Studio все отсутствующие пакеты восстанавливаются автоматически. Этот параметр не влияет на сборки, выполняемые из командной строки MSBuild.
Чтобы включить или отключить восстановление пакетов для всех пользователей на компьютере, разработчик или компания могут добавить параметры конфигурации в глобальный файл nuget.config . Глобальный файл nuget.config в Windows находится в каталоге %ProgramData%\NuGet\Config и иногда может размещаться в конкретной папке Visual Studio \\\\ . В Mac/Linux его следует искать в каталоге ~/.local/share . После этого отдельные пользователи могут выборочно включить восстановление на уровне проекта по необходимости. Дополнительные сведения о том, как NuGet устанавливает приоритеты для нескольких файлов конфигурации, см. в статье Распространенные конфигурации NuGet.
При изменении параметров packageRestore прямо в nuget.config нужно перезапустить Visual Studio, чтобы диалоговое окно packageRestore отображало текущие значения.
Необходимо восстановить один пакет NuGet или несколько, но это не удалось выполнить, так как не было получено согласие
Эта ошибка означает, что восстановление пакета отключено в конфигурации NuGet.
Вы можете изменить подходящие параметры в Visual Studio, как описано выше в разделе Быстрое решение для пользователей Visual Studio.
Можно также изменить эти параметры напрямую в соответствующем файле nuget.config (обычно это %AppData%\NuGet\NuGet.Config в Windows и ~/.nuget/NuGet/NuGet.Config в Mac и Linux). Убедитесь, что для ключей enabled и automatic в разделе packageRestore задано значение True.
При изменении параметров packageRestore прямо в nuget.config нужно перезапустить Visual Studio, чтобы диалоговое окно параметров отображало текущие значения.
Принудительное восстановление из источников пакетов
Чтобы папка global-packages не использовалась, сделайте следующее:
- Очистите папку с помощью команды nuget locals global-packages -clear или dotnet nuget locals global-packages --clear .
- Перед операцией восстановления временно измените расположение папки global-packages с помощью одного из следующих методов:
- В качестве значения переменной среды NUGET_PACKAGES задайте другую папку.
- Создайте файл NuGet.Config , который в качестве значения параметра globalPackagesFolder (при использовании формата PackageReference) или repositoryPath (при использовании packages.config ) задает другую папку. Дополнительные сведения см. в статье, посвященной параметрам конфигурации.
- Только для MSBuild: Укажите другую папку с помощью свойства RestorePackagesPath .
Other potential conditions
You may encounter build errors due to missing files, with a message saying to use NuGet restore to download them. However, running a restore might say, "All packages are already installed and there is nothing to restore." In this case, delete the packages folder (when using packages.config ) or the obj/project.assets.json file (when using PackageReference) and run restore again. If the error still persists, use nuget locals all -clear or dotnet nuget locals all --clear from the command line to clear the global-packages and cache folders as described on Managing the global packages and cache folders.
When obtaining a project from source control, your project folders may be set to read-only. Change the folder permissions and try restoring packages again.
If you encounter other problems, file an issue on GitHub so we can get more details from you.
Восстановление пакетов гарантирует доступность всех зависимостей проекта без сохранения этих пакетов в системе управления версиями. Дополнительные сведения о настройке исключения двоичных файлов пакетов в репозитории системы управления версиями см. в статье Пакеты и система управления версиями.
Quick solution for Visual Studio users
If you're using Visual Studio, first enable package restore as follows. Otherwise continue to the sections that follow.
- Select the Tools > NuGet Package Manager > Package Manager Settings menu command.
- Set both options under Package Restore.
- Select OK.
- Build your project again.
These settings can also be changed in your NuGet.Config file; see the consent section. If your project is an older project that uses the MSBuild-integrated package restore, you may need to migrate to automatic package restore.
Автоматическое восстановление пакетов с помощью Visual Studio
Включите автоматическое восстановление пакетов, выбрав Средства Параметры Диспетчер пакетов NuGet и щелкните Автоматически проверять отсутствие пакетов при сборке в Visual Studio в разделе Восстановление пакетов.
Для проектов не на основе пакета SDK сначала выберите Разрешить NuGet скачивать отсутствующие пакеты, чтобы включить автоматическое восстановление.
Выполните построение проекта.
Если какие-либо пакеты по-прежнему установлены некорректно, в обозревателе решений отображается значок ошибки. Щелкните правой кнопкой мыши и выберите Управление пакетами NuGet, после чего удалите и переустановите затронутые пакеты с помощью диспетчера пакетов. Дополнительные сведения см. в статье Переустановка и обновление пакетов.
Если отображается ошибка "Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере" или "Необходимо восстановить один или несколько пакетов NuGet, однако это невозможно без вашего согласия", включите автоматическое восстановление. Для более старых проектов см. инструкции по переходу на автоматическое восстановление пакетов. Дополнительные сведения см. в статье Устранение ошибок при восстановлении пакетов.
Восстановление с помощью Azure Pipelines
Читайте также: