VS2017 nuget продолжает искать пакеты в неправильном месте
Поэтому я перешел из nuget packages.config в PackageReference и обнаружил, что существуют некоторые проблемы с совместимостью. Я вернул проект в рабочее состояние (до PackageReference), и теперь мой проект не компилируется.
Я получаю следующую ошибку:
Код серьезности Описание Ошибка состояния подавления строки файла проекта Пакет EntityFramework с версией 6.2.0 не найден в C:\Users\user.nuget\packages. Запустите восстановление пакета NuGet, чтобы загрузить пакет. DBManager
Это случилось с несколькими пакетами. Кажется, что Nuget почему-то ищет пакеты в каталоге user.net \ package. Первоначально в проекте была папка со всеми пакетами.
Я заставил глобальный путь быть в папке в проекте, отредактировав файл NuGet.Config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="C:\Projects\App\App Source\packages\" />
<add key="globalPackagesFolder" value="C:\Projects\App\App Source\packages\" />
</config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
</configuration>
Я не знаю, почему Nuget продолжает искать пакеты в этом месте. Стоит посмотреть на папку пакетов в проекте.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net46" />
<package id="EntityFramework6.Npgsql" version="3.1.1" targetFramework="net46" />
<package id="Npgsql" version="3.2.7" targetFramework="net46" />
<package id="System.Threading.Tasks.Extensions" version="4.3.0" targetFramework="net46" />
<package id="Z.EntityFramework.Plus.EF6" version="1.7.17" targetFramework="net46" />
</packages>
Все эти пакеты в packages.config не найдены. Эта проблема начала происходить, когда я попробовал PackageReference.
Есть ли способ сбросить настройки Nuget? Буду признателен за любые рекомендации по решению этой проблемы.
0 ответов
TLDR; Это вызвано скрытыми копиями нового project.assets.json
файл остается в вашем /obj/
папки. Они могут быть безопасно удалены.
Вы можете запустить этот Powershell (на свой страх и риск) в корневой папке решения, чтобы быстро очистить эти файлы:
ls project.assets.json -Recurse | foreach {rm $_}
project.assets.json
генерируется для проектов, использующих PackageReference
кэшировать граф зависимостей Nuget для вашего проекта. Кажется, это сбивает с толку Visual Studio/Nuget, если он оставлен там, даже если ваш проект использует (или вернулся к использованию) packages.config
Это может произойти и в Visual Studio 2019, если вы попытаетесь PackageReference
а затем вернуться к packages.config
(или даже если вы переключаетесь между ветками Git одним методом восстановления Nuget по сравнению с другим).
Дальнейшая информация
Больше информации о project.assets.json
Вот:
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-build?tabs=netcore2x