it-roy-ru.com

Обнаружено предупреждение о понижении версии пакета (ядро dotnet, vs 2017)

Я только что обновил все свои пакеты nuget для своего решения (проект dotnet core 1.1).

Теперь я получаю следующие предупреждения и не знаю, что они означают.

 NETStandard.Library downgrade warning


Update: Я все еще получаю предупреждения, упомянутые выше. Мои веб-проекты предупреждают о пакете Microsoft.NETCore.App (см. Скриншот ниже), а мои lib-проекты предупреждают о NETStandard.Library (см. Скриншот выше)

 Microsoft.NETCore.App downgrade warning

При попытке обновить Microsoft.NETCore.App в диспетчере пакетов NuGet, я получаю следующую ошибку:

 NuGet upgrade error

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

Заранее спасибо!

36
Nik

Согласно ответу выше, рабочее решение должно удалить следующую строку из вашего файла csproj.

Проект веб-приложения:

<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>

Lib проект:

<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
19
Nik

В моем случае ни одно из этих свойств не было установлено в моих файлах csproj.

Я должен был сказать VS, чтобы обновить эти пакеты через NuGet.

Предупреждения появились для меня после разрешения предупреждения для явной ссылки на неявную зависимость .NETCore.App после перехода с 1.0 на 1.1.

ОБНОВЛЕНИЕ 21/09/17

Это также, похоже, влияет на обновления до 2.0, разрешение то же самое. Обновите эти пакеты вручную с помощью NuGet. Спасибо IbrarMumtaz за указание на это!

14
Gerard Wilkinson

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

Я открыл файл YourAwesomeApp.csproj и поочередно прошел через ошибки «Обнаружено понижение пакета» и вручную изменил версию этой позиции с существующей версии на указанную версию, которая была показана в самой ошибке.

Например, если в сообщении об ошибке указано, что было обнаружено понижение версии «SqlServer 1.0.4 -> 1.0.3», найдите строку для пакета SqlServer и измените версию с 1.0.3 до 1.0.4.

Эти ошибки должны исчезнуть после сборки проекта. 

Недостатком этого является то, что на этот раз у меня было всего 5 ошибок, но что если в проекте другого человека написано 50 таких ошибок? Тогда задача этого человека вручную отредактировать эти строки будет очень утомительной и трудоемкой.

13
Jimmy Shaw

Мне удалось избавиться от этих предупреждений в моем проекте, удалив элемент <NetStandardImplicitPackageVersion> из файла csproj.

Есть некоторая информация в этой статье о неявных метапакетах, которые, кажется, являются основной причиной этой проблемы.

Вам также может понадобиться обновить некоторые зависимости. Например, мне пришлось обновить BenchmarkDotNet с 0.10.1 до 0.10.3, чтобы избавиться от нескольких предупреждений, подобных тем, которые вы видите.

10
Drew Noakes

Мне удалось исправить некоторые ошибки, такие как добавление NoWarn в cproj

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
    <NoWarn>$(NoWarn);NU1605</NoWarn>
  </PropertyGroup>

...
</Project>

Вы можете добавить его только временно во время обновления нескольких пакетов и удалить его позже.

8
mrapi

Попробуйте удалить :

<IsPackable>false</IsPackable>

из вашего файла проекта - это то, что работает для меня!

Если у вас все еще есть код ошибки NU1605, вы можете проигнорировать его, добавив следующее в файл проекта:

<PropertyGroup>
    <NoWarn>NU1605</NoWarn>
</PropertyGroup>
3
Emil

Попробуйте использовать NuGet

Я получаю:

ошибка NU1605: Обнаружено понижение пакета: System.Net.NameResolution с 4.3.0 до 4.0.0. Ссылка на упакованный напрямую из проекта, чтобы выбрать другую версию.

Поэтому я сослался на каталог пакета, запустив (в папке проекта):

dotnet add package System.Net.NameResolution

Смотрите Ошибки NuGet - NU1605

Проблема:

Пакет зависимостей указал ограничение версии для более высокой версии пакета, чем восстановление, которое в конечном итоге разрешено. То есть из-за правила «ближайших выигрышей» при разрешении пакетов более близкий пакет в графе мог переопределить удаленный пакет.

Решение:

Добавьте прямую ссылку на проект для более высокой версии пакета, который вы хотите использовать.

2
Robert Brooker

В моем случае эта ошибка была связана не с .NET Core, а с .NET Standard.

У меня было две библиотеки A и B. Библиотека A зависела от некоторого пакета nuget X, а библиотека B зависела от A. Как только я обновил X до новой версии, он каким-то образом запустился в зависимости от новой версии пакета nuget NETStandard.Library. (с 2.0.2 до 2.0.3), которая прервала сборку B с ошибкой Detected package downgrade: NETStandard.Library from 2.0.3 to 2.0.2. Reference the package directly from the project to select a different version.

После того, как я добавил пакет nuget NETStandard.Library как зависимость от B (очевидно, для последней версии 2.0.3), ошибка исчезла, даже если появилось новое предупреждение: 

/usr/local/share/dotnet/sdk/2.1.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(5,5): Предупреждение NETSDK1023: Ссылка на пакет для ссылки «NETStandard.Library» была включены в ваш проект. На этот пакет неявно ссылается .NET SDK, и вам обычно не нужно ссылаться на него из своего проект. Для получения дополнительной информации см. https://aka.ms/sdkimplicitrefs (NETSDK1023) (GWallet.Frontend.XF)

1
knocte

Вручную удаление зависимостей пакетов nuget из проекта и Install-Package для каждого из них устранило проблему в моем случае.

1
Max Favilli

Я мог бы решить эту проблему, загрузив более раннюю версию пакета, вызывающего проблему, которая, по-видимому, вызвана зависимостью от версии .NET Standard, которая не установлена, это также должно быть решено путем обновления Visual Studio.

0
mshwf

Я только недавно столкнулся с этой проблемой, и обновление пакетов NuGet мне помогло.

0
combatc2

Я пытался обновить Microsoft.AspNetcore.MVC до версии 2+. Решение для меня состояло в том, чтобы обновить все другие зависимости сначала до 2+, а затем, наконец, обновить .MVC.

0
Eric