2016-10-12 3 views
8

Я обновил библиотеку классов project.json до таргетинга netstandard1.3 и net64.Зависимость указана была X, но закончилась с Y

С учетом этого изменения:

$ 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.

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

ответ

6

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

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

Диагностика все еще может быть более информативной. Вы можете vote on the issue, если он также вас подойдет, и вы хотели бы, чтобы это стало понятным.

1

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

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

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

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

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

0

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

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

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

0

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

Отказ

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

Смежные вопросы