LazowskiAnton · Extensions

PackageSmith

Версии NuGet-пакетов прямо там, где они записаны: последняя версия после каждой строки пакета, вся история при наведении, обновление по Ctrl+. — а уязвимые и нерекомендуемые пакеты отмечены раньше, чем об этом скажет сборка.

Бесплатно · Visual Studio 2022 и 2026 · 14 языков интерфейса · без телеметрии

Зачем PackageSmith

Один и тот же файл проекта без PackageSmith и с ним: последние версии после строк пакетов

Устаревшее видно сразу

Не нужно открывать окно NuGet, чтобы узнать, что устарело: последняя версия стоит после каждого пакета — зелёным для патча, жёлтым для минора, оранжевым для мажора.

Сначала безопасные обновления

Известная уязвимость горит красным прямо в строке, вместе с ближайшей версией, где она исправлена; у нерекомендуемого пакета указана замена.

Только ваши источники

Версии берутся из источников пакетов вашего NuGet.config — nuget.org или фида вашей компании. Запрашиваются только имена и версии пакетов; ничего о вас или вашем проекте не отправляется.

Бесплатно и без подвохов

Без подписок, без «pro»-версии, без сбора данных и без сообщений в окне «Вывод» или при запуске. Единственное, о чём мы когда-нибудь попросим, — после того как вы им немного попользуетесь, — поставить оценку в Marketplace. Работает в Visual Studio 2022 и 2026, x64 и ARM64.

Возможности

Версии в конце строки

После каждой строки PackageReference, PackageVersion и package: ничего броского, если пакет актуален, иначе — последняя версия цветом шага. Скрытые (unlisted) версии никогда не предлагаются; предварительные выпуски — только пакетам, которые уже их используют, если в настройках не указано иное.

Файл Directory.Packages.props с последними версиями, уязвимым и нерекомендуемым пакетом
После строкиЗначение
✓ последняяПакет на последней версии.
→ 8.0.4 патчМеняется только третье число: исправления.
→ 6.5.1 минорМеняется второе число: новые возможности, без намеренных ломающих изменений.
→ 5.0.2 мажорМеняется первое число: здесь живут ломающие изменения.
⚠ уязвимость · высокаяУ используемой версии есть известная уязвимость; указана её серьёзность.
не рекомендуется · используйте …Авторы больше не рекомендуют пакет и называют тот, который следует использовать вместо него.

Карточка при наведении

Задержите указатель на версии в коде или на тексте после строки: карточка покажет описание, последнюю версию каждой более новой линейки (10.0.13, 9.0.10, 8.0.21 для пакета на 8.0.0) с датой, сколько ещё более новых версий есть, уязвимость с ближайшим обновлением без неё и кнопки Обновить до …, Открыть на nuget.org и Сайт проекта. Щелчок по любой версии в списке устанавливает её.

Карточка уязвимого пакета с последней версией каждой линейки

Обновление по Ctrl+.

Курсор на строке пакета, Ctrl+.: последний патч, последний минор и последний мажор предлагаются отдельно, так что безопасное обновление всегда в одном нажатии. Обновить все пакеты в этом файле в пределах их мажорной версии переводит каждый пакет на его последнюю версию того же мажора — мажоры остаются отдельным решением. Версия из свойства ($(ContosoVersion)) обновляется там, где файл её определяет. Файл правится как при ручном изменении: отмена работает, а Visual Studio восстанавливает пакеты как обычно.

Меню лампочки с обновлениями пакета до патча, минора и мажора

Настройки

Средства → Параметры → SmithWorks → PackageSmith. У каждого параметра есть описание.

ПараметрПо умолчанию
Показывать последнюю версию после каждого пакетавкл.
Отмечать актуальные пакеты меткой «✓ последняя»вкл.
Предлагать предварительные выпуски для всех пакетоввыкл.
Отмечать пакеты, не найденные в ваших источникахвыкл.
Отмечать уязвимые и нерекомендуемые пакетывкл.
Карточка при наведениивкл.
Обновление по Ctrl+.вкл.
Проверять снова через1 час
Автономный режимвыкл.
Попросить оценку в Marketplaceвкл.

Настройки хранятся в %LocalAppData%\PackageSmith, кеш версий — рядом с ними.

Страница параметров PackageSmith
Страница параметров.

Вопросы и ответы

Отправляет ли PackageSmith какие-либо данные?

Он запрашивает у ваших источников пакетов (из NuGet.config; без него — nuget.org) версии пакетов из ваших файлов — те же запросы, что делает Visual Studio при их восстановлении. Больше ничего не отправляется: ни телеметрии, ни имён проектов, ничего о вас. Если включён Автономный режим, запросов нет вообще.

Фид моей компании требует входа. Это работает?

Пока нет: фиды, требующие учётных данных, пропускаются, а их пакеты остаются без пометок — неверный ответ не показывается. Публичные фиды v3 (nuget.org, открытые фиды компаний) работают.

Почему после некоторых пакетов ничего нет?

Ничего не пишется, когда версия задана диапазоном или шаблоном ([1.0,2.0), 13.*), когда свойство определено в другом файле или когда ни один источник не ответил. Включите Отмечать пакеты, не найденные в ваших источниках, чтобы видеть пакеты, которых, по ответу каждого источника, у него нет.

Работает ли это с централизованным управлением пакетами?

Да: версии показываются в Directory.Packages.props после каждого PackageVersion, и VersionOverride в проекте тоже.

Восстанавливает ли обновление пакеты?

PackageSmith только правит файл. Visual Studio восстанавливает пакеты после изменения — так же, как когда вы меняете версию вручную.

Работает ли это вместе с LensSmith?

Да. Оба пишут в конце строк, поэтому делят это место: сначала версия, за ней — предупреждение NuGet от LensSmith.

Где сообщить о проблеме или предложить идею?

Создайте issue в репозитории Feedback на GitHub — там есть формы для ошибок и идей (конфиденциальные имена лучше изменить). Также можно воспользоваться вкладкой Q&A на Marketplace.

История изменений

1.0.1

1.0.0