Start Debugging

dotnetup: в .NET наконец появился менеджер версий SDK в стиле rustup

Microsoft создаёт dotnetup, официальный кроссплатформенный инструмент для установки, отслеживания и переключения между SDK и средами выполнения .NET. Вот что он делает и на каком этапе находится в июне 2026 года.

Долгие годы управление SDK для .NET означало жонглирование тремя отдельными вещами: автономными установщиками со страницы загрузки, скриптами dotnet-install для CI и инструментом dotnet-core-uninstall для очистки горы старых версий, остающихся позади. Никогда не существовало единой команды, которая устанавливает, отслеживает и переключает SDK так, как rustup делает для Rust или nvm для Node. С июня 2026 года это меняется. Microsoft создаёт dotnetup, и он уже встроен в то, как SDK для .NET собирает сам себя.

Что такое dotnetup на самом деле

dotnetup — это официальный кроссплатформенный менеджер версий для SDK и сред выполнения .NET. Его единственная задача — устанавливать компоненты в каталог с областью видимости пользователя без необходимости повышения прав, отслеживать установленное в манифесте и чисто переключать активную версию. Без запроса администратора, без MSI, без вмешательства в реестр.

Ключевые особенности поведения:

Единственная команда, подтверждённая в отслеживающем issue dotnet/sdk, — это путь установки, используемый здесь для получения предварительного SDK в скрипте сборки:

dotnetup sdk install preview

Более широкий набор команд (вывод списка установленных версий, установка значения по умолчанию, удаление) всё ещё дорабатывается открыто, поэтому относитесь к любому более длинному примеру как к иллюстративному, а не окончательному.

Почему global.json — это настоящий выигрыш

Болезненная часть работы с .NET в нескольких репозиториях сегодня — это несоответствие global.json. Вы клонируете репозиторий, запускаете dotnet build и получаете ошибку, потому что он закрепляет SDK, которого у вас нет. Ваши единственные варианты — разыскать нужный установщик или отредактировать файл.

{
  "sdk": {
    "version": "10.0.301",
    "rollForward": "latestPatch"
  }
}

С менеджером версий, который понимает этот файл, разрешение превращается в один шаг: направьте dotnetup на репозиторий и позвольте ему получить закреплённый SDK в ваш профиль пользователя. Это та же эргономика, которая у разработчиков Rust есть уже годы благодаря rust-toolchain.toml.

На каком этапе он находится прямо сейчас

dotnetup находится во внутренней предварительной версии. На сайте .NET ещё нет установщика в одну строку, и практический способ попробовать его сегодня — собрать из исходного кода. Публичная предварительная версия запланирована на ближайшие месяцы. Примечательно, что ветка main репозитория dotnet/sdk уже использует dotnetup как часть собственной сборки, что является сильным сигналом того, что это и есть предполагаемое будущее установки .NET, а не эксперимент.

Если вы поддерживаете конвейеры CI или вводите разработчиков в репозитории со строго закреплёнными SDK, это инструмент, за которым стоит следить. Отслеживайте прогресс в issue репозитория dotnet/sdk об использовании dotnetup в скриптах сборки и в информационном issue, отмечающем, что ветка main теперь собирается с его помощью.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад