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

Я обновил библиотеку классов 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,

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

4 ответа

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

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

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

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

отказ

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам