Обнаруженное предупреждение о понижении пакетов (ядро dotnet, против 2017)
Я только что обновил все мои пакеты nuget для своего решения (проект ядра dotnet core 1.1).
Теперь я получаю следующие предупреждения, и я не знаю, что они означают.
![NETStandard.Library downgrade warning]()
Обновление: Я все еще получаю предупреждения, упомянутые выше. Мои веб-проекты предупреждают о пакете Microsoft.NETCore.App(см. Снимок экрана ниже), а мои проекты lib предупреждают о NETStandard.Library(см. Скриншот выше)
![Предупреждение о снижении Microsoft.NETCore.App]()
При попытке обновить Microsoft.NETCore.App в диспетчере пакетов NuGet я получаю следующую ошибку:
![Ошибка обновления NuGet]()
Надеюсь, кто-то может помочь мне избавиться от этих предупреждений и настроить все, что он предназначен, поэтому я могу обновить все свои пакеты.
Спасибо заранее!
Ответы
Ответ 1
Согласно ответу выше, рабочее решение должно удалить следующую строку из вашего файла csproj.
Проект веб-приложения:
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
Lib проект:
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
Ответ 2
В моем случае ни одно из этих свойств не было установлено в моих файлах csproj.
Мне пришлось сказать VS, чтобы обновить эти пакеты через NuGet.
Предупреждения появились для меня после разрешения предупреждения для явной ссылки на неявную зависимость .NETCore.App после перехода с 1.0 на 1.1.
ОБНОВЛЕНИЕ 21/09/17
Это также, похоже, влияет на обновления до 2.0, разрешение остается тем же. Обновите эти пакеты вручную с помощью NuGet. Спасибо IbrarMumtaz за указание на это!
Ответ 3
Мне удалось избавиться от этих предупреждений в моем проекте, удалив элемент <NetStandardImplicitPackageVersion>
из файла csproj
.
Вот некоторая информация в этой статье о неявных метапакетах, которая, кажется, является основной причиной этой проблемы.
Вам также может потребоваться обновить некоторые зависимости. Например, мне пришлось обновить BenchmarkDotNet
от 0.10.1
до 0.10.3
, чтобы избавиться от нескольких предупреждений, подобных тем, которые вы видите.
Ответ 4
Эта ситуация возникла у меня после открытия существующего решения, но вместо предупреждений это были Ошибки.
Я открыл файл YourAwesomeApp.csproj и один раз пропустил ошибки "Обнаруженный пакет вниз" и вручную изменил версию этой позиции из существующей версии на указанную версию, которая была показана в самой ошибке.
Например, если в Error указано, что пониженный уровень обнаружен "SqlServer 1.0.4 → 1.0.3", найдите строку для пакета SqlServer и отредактируйте версию с 1.0.3 до 1.0.4.
Эти ошибки должны исчезнуть после создания проекта.
Недостатком этого является то, что на этот раз у меня было всего 5 ошибок, но что, если в проекте другого человека содержится 50 таких ошибок. Тогда задача этого человека вручную отредактировать эти строки будет очень утомительной и трудоемкой.
Ответ 5
Мне удалось исправить некоторые ошибки, такие как добавление NoWarn в cproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);NU1605</NoWarn>
</PropertyGroup>
...
</Project>
Возможно, вы захотите добавить его только временно во время обновления нескольких пакетов и удалить его позже.
Ответ 6
Попробуйте удалить:
<IsPackable>false</IsPackable>
из вашего файла проекта - это то, что работает для меня!
Если у вас все еще NU1605
код ошибки NU1605
вы можете проигнорировать его, добавив следующее в файл проекта:
<PropertyGroup>
<NoWarn>NU1605</NoWarn>
</PropertyGroup>
Ответ 7
Вручную удаление зависимостей пакетов nuget из проекта и Install-Package для каждого из них устранило проблему в моем случае.
Ответ 8
Попробуйте использовать NuGet
Я получаю:
ошибка NU1605: Обнаружено понижение пакета: System.Net.NameResolution с 4.3.0 до 4.0.0. Ссылка на упакованный напрямую из проекта, чтобы выбрать другую версию.
Поэтому я сослался на каталог пакета, запустив (в папке проекта):
dotnet add package System.Net.NameResolution
Посмотреть ошибки NuGet - NU1605
Выпуск:
Пакет зависимостей указал ограничение версии для более высокой версии пакета, чем восстановление, которое в конечном итоге разрешено. То есть из-за правила "ближайших выигрышей" при разрешении пакетов более близкий пакет в графе мог переопределить удаленный пакет.
Решение:
Добавьте прямую ссылку на проект для более высокой версии пакета, который вы хотите использовать.
Ответ 9
В моем случае эта ошибка была связана не с .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
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).
Ответ 10
Недавно я столкнулся с этой проблемой, и обновление пакетов NuGet было для меня чем-то.
Ответ 11
Я пытался обновить Microsoft.AspNetcore.MVC до версии 2+. Решением для меня было обновить все другие зависимости сначала до 2+, а затем, наконец, обновить .MVC.
Ответ 12
Я мог бы решить эту проблему, загрузив более раннюю версию пакета, вызвавшую проблему, которая, по-видимому, вызвана зависимостью от версии .NET Standard, которая не установлена, это также должно быть решено путем обновления Visual Studio.
Ответ 13
Я решил эту проблему благодаря этому ответу. По сути, просто добавьте следующую строку в теги <PropertyGroup>
в вашем файле .csproj
:
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>