Вопрос или проблема
Я только что обновился до версии 24.04.1 и заметил, что она удаляет много пакетов (старые версии dotnet core 6,7).
У меня установлен dotnet core 8.x, он работает и позволяет мне перечислять sdks и runtimes.
- 8.0.110 [/usr/lib/dotnet/sdk]
- Microsoft.AspNetCore.App 8.0.10 [/usr/lib/dotnet/shared/Microsoft.AspNetCore.App]
- Microsoft.NETCore.App 8.0.10
[/usr/lib/dotnet/shared/Microsoft.NETCore.App]
Однако, когда я пытаюсь создать простой .net core webapi, я получаю следующую ошибку:
ошибка NU1101: Не удается найти пакет
Microsoft.NETCore.App.Host.ubuntu.24.04-x64. Пакеты с
этим идентификатором не существуют в источниках: nuget.org
Что это значит? Как мне это решить?
Когда я искал в интернете, я нашел только неопределенный ответ для .NET Core 6.x. Но, к счастью, кто-то недавно разместил сообщение в этой теме в связи с 24.04.1 и .NET Core 8.x
Мне повезло, и я нашел ответ по адресу:
https://github.com/dotnet/sdk/issues/40676#issuecomment-2102017357
Удалите и установите заново
Ответ заключается в том, чтобы удалить (правильно) с помощью следующей команды (упомянутой по предыдущей ссылке):
sudo apt-get remove 'dotnet*' 'aspnet*' 'netstandard*'
Затем вернитесь и установите .net core снова.
Смотрите https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?pivots=os-linux-ubuntu-2404&tabs=dotnet8 для этих шагов.
Это решает мою проблему.
Ответ или решение
Проблемы с установкой и сборкой .NET Core после обновления до Ubuntu 24.04.1
При обновлении до версии Ubuntu 24.04.1 у вас появилась проблема со сборкой приложения на .NET Core, что связано с недоступностью определённого пакета. Давайте подробно разберёмся с возникшей ситуацией и возможными решениями.
Проблема
Вы отметили, что после обновления были удалены старые версии .NET Core 6 и 7, оставив установленным только .NET Core 8.x. При попытке собрать простое веб-приложение вы столкнулись с ошибкой:
error NU1101: Unable to find package Microsoft.NETCore.App.Host.ubuntu.24.04-x64. No packages exist with this id in source(s): nuget.org
Эта ошибка указывает на то, что проект не может найти требуемый пакет для платформы Ubuntu 24.04.x в источниках, определённых в вашем проекте.
Причины проблемы
-
Удаление старых версий: После обновления система очистила старые пакеты .NET, что могло привести к несовместимости с вашим проектом, если он ещё ссылается на старые версии пакетов.
-
Неправильные источники NuGet: Возможны случаи, когда используемые вами источники для NuGet не включают все необходимые пакеты для сборки под новую версию ОС.
Решение
На основании найденной информации вGithub, правильное решение состоит в переустановке .NET Core с нуля, что поможет устранить проблемы с зависимостями и отсутствующими пакетами. Для этого выполните следующие шаги:
-
Удаление существующих пакетов .NET:
Откройте терминал и выполните команду:
sudo apt-get remove 'dotnet*' 'aspnet*' 'netstandard*'
Эта команда удалит все установленные пакеты, связанные с .NET.
-
Переустановка .NET Core 8.x:
После успешного удаления пакетов вам нужно выполнить инструкцию по установке .NET Core для Ubuntu 24.04.1. Вы можете найти актуальные шаги по установке на официальной странице Microsoft:
Установка .NET на Ubuntu 24.04. -
Проверка установленных версий:
После установки убедитесь, что все версии SDK и соответствующие зависимости установлены корректно, выполнив:
dotnet --list-sdks dotnet --list-runtimes
Данная команда должна вывести список доступных SDK и Runtime. Убедитесь, что присутствуют версии, необходимые для вашего проекта.
-
Проверка конфигурации проектов:
Если после переустановки проблема все еще остается, проверьте файл конфигурации вашего проекта (например,
.csproj
). Убедитесь, что зависимости и версии SDK в соответствующих нахождениях указаны корректно.
Заключение
Таким образом, основным способом исправления проблемы с невозможностью сборки .NET Core после обновления Ubuntu до версии 24.04.1 является полное удаление существующих версий и повторная установка .NET Core. Следуя вышеописанным шагам, вы сможете устранить появившиеся ошибки и вернуть функциональность вашего проекта.