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? Буду признателен за любые рекомендации по решению этой проблемы.


person ChipNugget    schedule 15.11.2018    source источник
comment
У меня была аналогичная проблема, и я решил ее, очистив кеши NuGet (VS = ›Инструменты =› Параметры = ›Диспетчер пакетов NuGet =› Очистить кеши)   -  person Lennart    schedule 15.11.2018
comment
Пробовал. Ничего не менял. Он продолжает искать пакеты по глобальному пути nuget по умолчанию (под пользователями) ... Я подумываю о чистой установке, но не уверен, в чем проблема: мой локальный проект, Nuget или Visual Studios   -  person ChipNugget    schedule 16.11.2018
comment
Вы когда-нибудь решали это. У меня точно такая же проблема.   -  person Ian Sullivan    schedule 16.04.2019


Ответы (1)


TL; DR; Это вызвано тем, что скрытые копии нового 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

person basecode    schedule 16.05.2019