Почему новый проект API создается с ошибкой совместимости?

#macos #visual-studio #.net-core #nuget

#macos #visual-studio #.net-core #nuget

Вопрос:

Я пока не смог найти ответ в Интернете, и я не уверен, является ли это проблемой или нет. Когда я создаю новый проект API в dotnet Core и пытаюсь «обновить nuget» через графический интерфейс, я получаю следующую ошибку:

NU1202: пакет Microsoft.AspNetCore.App 2.2.4 несовместим с netcoreapp2.1 (.NETCoreApp, версия = v2.1). Пакет Microsoft.AspNetCore.App 2.2.4 поддерживает: netcoreapp2.2 (.NETCoreApp, версия = v2.2)

Я попытался обновить Visual Studio и создал новое решение и проект, повторилось то же самое.

Я не уверен, будет ли это проблемой в ближайшем будущем при добавлении других пакетов, поскольку в нем говорится: « rolling back package changes for... означает ли это, что он также будет откатывать все пакеты без ошибок?

Комментарии:

1. Вам необходимо обновить версию targetframework в файле csproj перед обновлением пакетов nuget. Базовая платформа Aspnet тесно связана с версией среды выполнения dotnet.

2. Привет, Марсель, какая у тебя версия VS? Если вы не запустите обновление nuget и не скомпилируете это решение напрямую, эта проблема сохраняется или нет? Согласно этому документу: learn.microsoft.com/en-us/nuget/tools/cli-ref-update , «обновление» не работает с CLI, работающим под управлением Mono (Mac OSX или Linux), или при использовании формата PackageReference.

Ответ №1:

Microsoft.AspNetCore.App это специальный пакет, на который в .NET Core 2.1 и 2.2 следует ссылаться как на пакет без номера версии. SDK автоматически подключит любую версию, подходящую для этой версии SDK, но, к сожалению, вам нужна ссылка PackageReference в вашем csproj. Однако, похоже, что он больше не будет использоваться в .NET Core 3.0.

Это также означает, что вы не должны использовать инструменты, которые вслепую обновляют этот пакет, поскольку у пакета не должно быть версии в вашем csproj.

Если вы хотите использовать последнюю версию ASP.NET Ядро, вам необходимо установить последнюю версию .NET SDK и изменить свой <TargetFramework> , чтобы выбрать правильную netcoreapp версию.