Указанная зависимость была 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 не всегда обновляется должным образом:
- Откройте файл project.json и обрежьте строку с предупреждением
- Сохраните файл и дождитесь исчезновения сообщения "Восстановление пакетов..."
- Вставьте строку обратно в
- Сохраните файл снова
Другой способ принудительного обновления - запуск dotnet restore --no-cache
на уровне решения или проекта.
У меня была эта проблема, когда проект общей библиотеки был в более чем одном решении.
Расположение каталога проекта библиотеки было изменено, а файл global.json был обновлен в одном решении.
В другом случае файл sln был обновлен для нового местоположения файла проекта. Однако, global.json нет. Поскольку проект был перемещен в более высокий каталог, старый файл global.json ссылался на слишком конкретное местоположение.