Обнаруженное понижение пакета: Microsoft.NETCore.App с 2.1.3 до 2.1.0

Я пытаюсь обновить свое.net-решение от.NET Core 1.1 до.NET Core 2.1. У меня есть несколько стандартных проектов.NET Core и.NET, которые ссылаются друг на друга и на другие пакеты NuGet. После того, как команды "dotnet resore" и "dotnet build" работают нормально, но когда я пытаюсь построить свое решение из visual studio, я получаю эту ошибку:

Ошибка NU1605 Обнаруженное понижение пакета: Microsoft.NETCore.App с 2.1.3 до 2.1.0. Ссылка на пакет непосредственно из проекта, чтобы выбрать другую версию.

И я вижу, что действительно некоторые из моих проектов имеют SDK ссылку на Microsoft.NETCore.App v2.1.0 и некоторые из них v.2.1.3. Установка RuntimeFrameworkVersion и добавление этого пакета в зависимости явно не работает.

Как я могу справиться с этим?

UPD: dotnet --info:

.NET Core SDK (reflecting any global.json):  Version:   2.1.401  Commit:    91b1c13032

Runtime Environment:  OS Name:     Windows  OS Version:  10.0.17134  OS Platform: Windows  RID:         win10-x64  Base Path:   C:\Program Files\dotnet\sdk\2.1.401\

Host (useful for support):   Version: 2.1.3   Commit:  124038c13e

.NET Core SDKs installed:
  1.1.10 [C:\Program Files\dotnet\sdk]
  2.0.0 [C:\Program Files\dotnet\sdk]
  2.1.4 [C:\Program Files\dotnet\sdk]
  2.1.100 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.400 [C:\Program Files\dotnet\sdk]
  2.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:   Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]   Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]   Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]   Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]   Microsoft.NETCore.App
1.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App 1.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App
2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App
2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]   Microsoft.NETCore.App
2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:   https://aka.ms/dotnet-download

UPD: почему-то проблема исчезает, если я удаляю эту строку из файла.csproj:

<RuntimeIdentifier>win7-x64</RuntimeIdentifier>

Это может быть связано?

Ответ 1

У меня была с тобой аналогичная проблема. Не удалось опубликовать мой проект, когда я указал идентификатор времени выполнения.

Решение, которое я получил, это добавить следующую строку в *.csproj

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

После того, как эта строка была добавлена, проект будет опубликован правильно.

Следующая ссылка ссылается на проблему с понижением до 2.1.1 и 2.1.0, но решение работает одинаково.

https://github.com/dotnet/cli/issues/9624

Ответ 2

У меня отсутствовала версия в файле csproj.

Добавление версии устранило проблему.

enter image description here

Ответ 3

После обновления .net core SDK на моей машине Windows с .net core 2.1.0 до .net core 2.2.0 у меня возникла та же проблема. Мне не удалось собрать проект, и я получил ошибку сборки при обнаружении понижения пакета: Microsoft.AspNetCore.Razor.Design с 2.2.0 до 2.1.0.

Я решил эту проблему, обновив пакет nuget для Microsoft.AspNetCore.Razor.Design.

Ответ 4

У меня тоже был этот вопрос. В конечном итоге я решил удалить.NET SDK 2.1.3 с панели управления "Программы". Или я в основном должен был удалить любые более поздние версии связанных библиотек SDK, которые мой проект пытался использовать.

Ответ 5

Моя версия этой проблемы (я думаю) была вызвана сочетанием реальных версий .NET Core, установленных на сервере сборки Jenkins вместе с проектом Unit Test, имеющим неоднозначные ссылки.

Я понимаю, что в идеальном случае dotnet не ожидает версии, указанной в csproj для AspNetCore, что обеспечивает максимальную гибкость при сборке:

<PackageReference Include="Microsoft.AspNetCore.App" />

Однако на сервере сборки, когда он компилировал основной проект (первый), он решил использовать 2.1.6 в качестве версии AspNetCore. Затем он пытается скомпилировать тестовый проект, и этот проект имеет минимальную версию "2.1.1", поэтому процесс сборки пытается понизить версию, а затем прервать сборку в случае сбоя.

Я удалил минимальную версию "2.1.1" из тестового проекта, но тогда тестовый проект не собирался локально, потому что не мог однозначно разрешить зависимости. После ряда обновлений/понижений в пакете NuGet не было никакой радости, поэтому мы решили установить минимальную версию "2.1.6", чтобы она соответствовала серверу сборки.

Это все еще не могло разрешить локально все зависимости правильно, и, в конце концов, привело к принудительному установлению минимальной версии для NetCore:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.6" />
<PackageReference Include="Microsoft.NetCore.App" Version="2.1.6" />

Теперь все построено локально и на сервере сборки Jenkins!

Ответ 6

У меня также возникла эта проблема после установки новой версии.Net Core (от 2.0 до 2.1). Нижеследующая ссылка дала мне намек на то, что вызвало проблему.

https://github.com/dotnet/cli/issues/9433

Решением для меня было изменение проекта Target Framework до последней установленной версии.Net Core.

Project Properties > Application > Target Framework

Ответ 7

для меня версия отсутствует в файле .cproj

добавленная версия исправлена для меня. после этого я опубликовал для цели: win-64