Microsoft представила dotnetup — менеджер SDK и рантаймов .NET по образцу rustup и nvm

15 октября Microsoft открыла публичное превью dotnetup — кроссплатформенного менеджера, который ставит, обновляет и удаляет SDK и рантаймы .NET в профиле пользователя, без прав администратора. Инструмент повторяет модель rustup и nvm: несколько версий рядом, привязка к global.json, обновление одной командой. Для продакшен-машин Microsoft пока советует прежние установщики.
Для команд, которые ведут backend-разработку на ASP.NET Core, это ответ на старую боль: на одной машине часто живут проекты на .NET 8, 10 и превью .NET 11, а ставить и чистить версии приходилось вручную или скриптами. Новинка особенно полезна тем, кто готовит переход на .NET 11 — о его последнем релиз-кандидате мы писали в новости про .NET 11 RC2.
Второй адресат — инженеры, которые отвечают за окружения и пайплайны. Если у вас настроены DevOps-процессы и CI/CD, dotnetup пока не замена привычным образам сборки, но интеграцию с GitHub Actions и Azure DevOps Microsoft уже включила в планы.
Что такое dotnetup и откуда он взялся
Анонс в блоге .NET опубликовал Чет Хаск (Chet Husk), программный менеджер .NET SDK. По его словам, dotnetup вдохновлён менеджерами тулчейнов из других экосистем — rustup для Rust и nvm для Node.js. Документация Microsoft Learn описывает его как «кроссплатформенный менеджер тулчейна для пользовательских установок .NET»: он не пишет в системный каталог .NET и запоминает, какие версии вы запросили, чтобы потом обновить или удалить связанные файлы.
Устанавливается сам dotnetup bootstrap-скриптом: для bash и zsh — через curl, для PowerShell — через irm. По данным InfoQ, скрипт проверяет контрольную сумму SHA-512 перед тем, как положить бинарник в домашний каталог пользователя.
Какие задачи dotnetup решает для команды
- Несколько версий рядом. SDK и рантаймы (.NET, ASP.NET Core, Windows Desktop) ставятся бок о бок в одну управляемую установку — без конфликта с системным .NET.
- Каналы вместо номеров. Можно отслеживать канал — latest, lts, preview, daily, мажорную или минорную версию — и получать сервисные обновления командой
dotnetup update. Точные версии при этом не трогаются. - Привязка к репозиторию. dotnetup умеет поставить SDK, который требует ближайший файл
global.json, — сборка у всех разработчиков идёт на одной версии. - Уборка. Неиспользуемые и вышедшие из поддержки установки удаляются автоматически после обновления.
- Аккуратная работа с PATH. Можно прописать
dotnetв профиль шелла (dotnetup env set shell) или вообще не трогать PATH и вызывать управляемую версию черезdotnetup dotnet <команда>.
Чем dotnetup отличается от скриптов dotnet-install
Скрипты dotnet-install давно служат «ручным» способом поставить .NET без установщика, особенно в CI. Но они только скачивают и распаковывают файлы: что и куда установлено, они не помнят. По сравнению с ними Microsoft называет у dotnetup четыре преимущества: управление жизненным циклом установок, проверку подписей, более быструю установку сразу нескольких компонентов и единый набор команд на всех платформах.
Базовый сценарий укладывается в пару команд: dotnetup init запускает интерактивную настройку и ставит последний стабильный SDK, dotnetup list показывает отслеживаемые каналы и установленные версии, dotnetup sdk install и dotnetup runtime install добавляют нужные компоненты, dotnetup self update обновляет сам инструмент.
Ограничения превью: где dotnetup пока не стоит применять
Статус — public preview: команды, параметры и поведение могут меняться между выпусками, а жизненный цикл поддержки стабильной версии не утверждён. Microsoft прямо пишет, что продакшен-машинам стоит и дальше использовать установщики, пакетные менеджеры или Visual Studio. В дорожной карте — управление системными установками в Windows, интеграция с CI/CD (GitHub Actions, Azure DevOps) и поддержка workloads. Обратную связь команда собирает в разделе обсуждений репозитория dotnet/sdk на GitHub.
Как попробовать dotnetup без риска
- Начните с рабочих станций разработчиков, а не с серверов и агентов сборки: превью для этого и предназначено.
- Проверьте global.json в репозиториях — dotnetup будет ставить SDK по нему, поэтому версия в файле должна быть актуальной.
- Используйте отдельный канал preview для проб .NET 11, не смешивая его с LTS-версией, на которой работает продакшен.
- Решите вопрос PATH заранее: если на машине уже есть системный .NET, режим без изменения PATH (
env set none) помогает избежать путаницы версий. - Не переносите CI на dotnetup, пока не выйдет официальная интеграция с пайплайнами, — образы сборки и скрипты dotnet-install там пока надёжнее.
Часто задаваемые вопросы
Нужны ли права администратора для dotnetup? Нет: инструмент ставит .NET в каталог пользователя и не пишет в системную установку.
Заменяет ли dotnetup установщик .NET и Visual Studio? Пока нет. Это превью для разработчиков; для продакшен-машин Microsoft рекомендует прежние способы установки.
Можно ли держать .NET 8, .NET 10 и превью .NET 11 одновременно? Да, side-by-side установка нескольких SDK и рантаймов — основной сценарий dotnetup, включая preview- и daily-сборки.
Где оставить отзыв или сообщить об ошибке? В разделе обсуждений dotnetup репозитория dotnet/sdk на GitHub — его указывает анонс Microsoft.
Источники
- .NET Blog — Introducing dotnetup, 15 октября 2026 (первоисточник).
- Microsoft Learn — dotnetup overview, документация, обновлена 16 октября 2026.
- InfoQ — Microsoft Previews dotnetup: Toolchain Manager for .NET SDKs and Runtimes, 21 октября 2026.
Зоопарк версий .NET на машинах и в CI? Наведём порядок
Зафиксируем версии SDK через global.json, соберём воспроизводимые образы сборки и настроим пайплайны так, чтобы переход на .NET 10 LTS или .NET 11 не ломал релизы.