Указанная зависимость была X, но закончилась с Y

#.net #.net-core #project.json #dotnet-restore

#.net #.net-core #project.json #dotnet-восстановление

Вопрос:

Я обновил библиотеку классов project.json для назначения netstandard1.3 и net64 .

С этим изменением:

 $ dotnet restore
log  : Restoring packages
warn : Dependency specified was NETStandard.Library (>= 1.3.0) but ended up with
       NETStandard.Library 1.6.0.
  

Я публикую библиотеку, и мне действительно нужно настроить таргетинг netstandard1.3 / net46 .

Как я могу диагностировать, почему вместо этого используется более высокая версия?

Ответ №1:

Я продолжил с этим в связи с проблемой NuGet, и @emgarten указал, что NETStandard.Library пакет имеет только версию 1.6.0, но эта версия 1.6.0 содержит сборки для netstandard1.3 .

Таким образом, в этом случае запрошенная мной версия 1.3 нигде не существует, и предупреждение представляет собой уведомление о том, что вместо этого используется более высокая версия.

Однако диагностика все равно может быть более информативной. Вы можете проголосовать по этому вопросу, если он также сбивает вас с толку, и вы хотели бы, чтобы он был более понятным.

Ответ №2:

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

Первое, что вы хотите сделать, это убедиться, что у вас есть правильная версия, указанная в Solution Items -> global.json .

Тогда вам может потребоваться обновить каждый project.json, ссылающийся на этот проект, поскольку VS2015 не всегда обновляется должным образом:

  1. Откройте project.json и вырежьте строку, выдающую предупреждение
  2. Сохраните файл и дождитесь исчезновения сообщения «Восстановление пакетов …»
  3. Вставьте строку обратно в
  4. Сохраните файл снова

Другой способ принудительного обновления — запуск dotnet restore --no-cache на уровне решения или проекта.

Ответ №3:

Для меня сработало простое удаление файла блокировки ( project.lock.json ). После удаления этого файла Nuget автоматически восстановил все пакеты, и проблема исчезла.

Отказ от ответственности

Хотя это сработало для меня, я не уверен, что это надежный способ делать то, что будет работать для всех. Поэтому, пожалуйста, помните о том, что вы делаете, прежде чем удалять этот файл.

Ответ №4:

У меня была эта проблема, когда общий библиотечный проект был в нескольких решениях.

Расположение каталога проекта библиотеки было изменено, и глобальный файл.json был обновлен в одном решении.

В другом случае файл sln был обновлен для нового расположения файла проекта. Однако global.json нет. Поскольку проект был перемещен в более высокий каталог, старый файл global.json ссылался на слишком конкретное местоположение.