VS2017 nuget продолжает искать пакеты в неправильном месте - PullRequest
0 голосов
/ 15 ноября 2018

Итак, я мигрировал из 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>

Все эти пакеты в package.config не найдены. Эта проблема начала возникать, когда я попробовал PackageReference.

Есть ли способ сбросить настройки Nuget? Буду признателен за любые рекомендации по решению этой проблемы.

1 Ответ

0 голосов
/ 16 мая 2019

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

...