Как же часто бывает в проектах, особенно где доминирует легаси-код, что добавленные ранее зависимости тяготеют проект. Это мешает внедрять новые фичи, старые зависимости наслаиваются как снежный ком и не дают развиваться проекту.
Если обратиться к книге "Роберта Мартина. Чистый код", то автор в главе 1 приводит очень интересный пример одной компании, которая в конце 80-х годов написала приложение-бестселлер. Приложение было настолько популярным, что его повсеместно покупали и использовали. Но в последующем итерации разработки стали затягиваться, выпуски новых версий происходили с большими задержками. Ошибки и уязвимости между версиями не исправлялись, сбои происходили всё чаще. В конечном итоге пользователи перестали использовать данное приложение, а вскоре компания обанкротилась.
В данном случае плохой код привел к краху компании. Однако в наше время к этому может привести несвоевременное обновление версий зависимостей разрабатываемого продукта.
В этой статье разберем разные способы определения устаревших пакетов и обновления их при необходимости.
Способ №1. Диспетчер пакетов в IDE (самый распространённый)
В Visual Studio или Rider можно легко узнать, доступны ли новые версии пакетов, используемых вашим проектом, с помощью диспетчера пакетов NuGet.
Если используете MS Visual Studio сделайте следующее:
1) откройте Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution… (Инструменты -> Менеджер NuGet-Пакетов -> Управлять NuGet-Пакетами в Решении…);
2) перейдите на вкладку Updates (Обновления);
3) выберите все обновления и нажмите Update (Обновить). Есть также возможность обновить их по одному;
4) перейдите на вкладку Consolidate (Консолидация). Будут показаны пакеты, установленные в разных версиях в проектах решения, и что позволит привести все установленные пакеты к одной версии.
Если используете Jetbrains Rider:
1) откройте View -> Tool Windows -> NuGet (Вид -> Окна Инструментов -> NuGet);
2) для обновления установленных пакетов, нажмите Upgrade Packages in Solution (Обновить пакеты в решении) на панели инструментов окна NuGet
3) далее необходимо выбрать, какие пакеты следует обновить. Либо можно выбрать один из установленных пакетов в левой части окна NuGet, выбрать нужную версию в правой части, а затем обновить версию пакета в конкретных проектах.
Способ №2. Утилита dotnet-outdated
Это утилита командной строки с открытым исходным кодом. Подробнее о ней: https://github.com/dotnet-outdated/dotnet-outdated
Сначала нужно установить данную утилиту, выполнив следующую команду:
Теперь можно вызвать её, выполнив команду в папке проекта или решения:
Утилита выдаст список всех доступных обновлений, выделенных цветом:
- зеленым – патчи и исправления ошибок (обратно совместимо),
- желтым – обновления минорных версий (обратно совместимо, добавлены новые функции),
- красным – обновления мажорных версий (возможны ломающие изменения).
Чтобы обновить все устаревшие пакеты, выполните команду:
Способ №3. Через команду dotnet
Также можно использовать утилиты командной строки dotnet напрямую. Чтобы получить список устаревших пакетов, выполните следующую команду:
Чтобы обновить устаревший пакет, нужно выполнить команду:
Заметьте, что нужно выполнить эту команду по отдельности для всех пакетов, которые вы хотите обновить.
Если проект размещён на GitHub, не обязательно постоянно помнить о необходимости проверки обновлений. Утилиты GitHub, вроде Dependabot помогут в этом, проанализировав зависимости проектов и создавая пул-реквесты каждый раз, когда появляется новая версия какой-то из зависимостей.
Источники:
1) https://bartwullems.blogspot.com/2024/05/net-core-view-outdated-packages.html?m=1
2) Роберт Мартин. Чистый код.

Комментариев нет:
Отправить комментарий