Introducing dotnetup: a toolchain manager for .NET SDKs and runtimes
Microsoft has announced the public preview of dotnetup, a toolchain manager that installs, manages and updates .NET SDKs and runtimes in the user account on macOS and Linux. It needs no admin rights, supports side-by-side versions and respects global.json. It is a practical option for local machines and CI workers.
Key points
- Install on macOS/Linux with the bootstrap script, then run dotnetup init to set up the shell and fetch the latest stable SDK
- dotnetup update re-resolves tracked channels: 10.0 stays within .NET 10, latest follows the newest stable SDK
- Exact-version requests such as 10.0.3 do not advance during update
- Install only a runtime flavor with dotnetup runtime install [email protected]
- Preview and daily builds can live beside stable ones: dotnetup sdk install preview, dotnetup runtime install daily
- Self-contained apps must be republished with the updated runtime; updating the machine does not patch shipped apps
Microsoft has released a public preview of dotnetup, a new toolchain manager that installs, manages and updates .NET SDKs and runtimes on macOS and Linux inside the user account. It addresses common friction with apt, brew, raw tarballs and dotnet-install scripts, which often need administrative rights, scatter files across system directories, and make side-by-side runtime versions awkward. Setup is a bootstrap script followed by dotnetup init, which configures the shell profile and installs the latest stable SDK.
dotnetup tracks intent rather than exact versions. A channel such as 10.0 receives monthly servicing updates within .NET 10, while latest follows the newest stable SDK, including new majors. Running dotnetup update re-resolves those channels, and exact requests such as 10.0.3 stay pinned. After an update, components no longer required by any channel or pin are removed automatically. Specific runtime flavors can be targeted, for example dotnetup runtime install [email protected], and preview or daily builds can be installed alongside stable ones with commands like dotnetup sdk install preview.
The practical consequence is a single CLI across platforms that works in CI workers and containers without elevated rights, and that respects global.json pinning. Updating the machine does not patch applications already shipped: self-contained apps must be republished with the updated runtime. Windows system-level installs and CI integrations such as GitHub Actions and Azure DevOps are on the roadmap, not yet available.
Real-world use
- A team on macOS or Linux machines that needs several .NET versions without admin rights
- Spinning up specific SDK or daily runtime versions on ephemeral CI workers or containers
- Testing a runtime bug fix with a daily build while keeping the stable setup untouched
Why it matters
Version management on macOS and Linux gets one CLI that respects global.json and needs no root access. Remember that updating the machine does not patch shipped self-contained apps, which must be republished.