tools/dotnet-sdk.cmd (92 lines of code) (raw):

@echo off SET dotnet_releases_url=https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json SET script_path=%~dp0 SET tools_path=%script_path%tools if [%1]==[help] goto help if [%1]==[] goto help if [%1]==[list] goto sdk_list if [%1]==[latest] goto sdk_latest if [%1]==[releases] goto sdk_releases if [%1]==[get] goto sdk_download for /f %%f in ('dir /b "%programfiles%\dotnet\sdk"') do ( if %1==%%f goto switch ) echo The %1 version of .Net Core SDK was not found echo Please, run "dotnet sdk list" to make sure you have it installed in "%programfiles%\dotnet\sdk" goto end :switch echo Switching .NET Core SDK version to %1 ( echo { echo "sdk": { echo "version": "%1" echo } echo } ) > global.json goto end :sdk_list echo The installed .NET Core SDKs are: dir /b "%programfiles%\dotnet\sdk" | find /i "." goto end :sdk_latest if exist global.json del global.json if exist ..\global.json ( set /p choice= There's a global.json in your parent directory. Do you want to delete it? (N/y) if /I "%choice%"=="y" ( del ..\global.json ) else ( SETLOCAL ENABLEDELAYEDEXPANSION set dotnetVersion= for /f "delims=" %%a in ('dotnet --version') do set dotnetVersion=%%a echo .NET Core SDK current version: !dotnetVersion! goto end ) ) echo .NET Core SDK version switched to latest version. dotnet --version goto end :help echo .NET Core SDK Switcher echo. echo Usage: .net sdk [command] echo Usage: .net sdk [version] echo Usage: .net sdk get [version] [platform] echo. echo Commands: echo latest Switches to the latest .NET Core SDK version echo list Lists all installed .NET Core SDKs echo releases Lists all available releases of .NET Core SDKs echo get Downloads the provided release version. ('' or 'latest' for the latest release) echo help Display help echo. echo version: echo An installed version number of a .NET Core SDK echo. goto end :sdk_releases echo Releases available for the .NET Core SDK are: "%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({date: .date,sdk: .\"version-sdk\"}) | unique_by(.sdk) | .[] | \"\(.date)\t\(.sdk)\" " -r echo. goto end :sdk_download SETLOCAL SET version=%2 if [%version%]==[] SET version=latest if "%version%"=="latest" ( "%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({sdk: .\"version-sdk\"}) | unique_by(.sdk) | .[-1] | .sdk " -r > version.dat set /p version=<version.dat ) SET platform=win-x64 if NOT [%3]==[] SET platform=%3 SET platform_id=sdk-%platform% "%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({sdk: .\"version-sdk\",url: (.\"blob-sdk\" + (.\"%platform_id%\" | rtrimstr(\".zip\")) + \".exe\" )}) | unique_by(.sdk) | .[] | select(.sdk==\"%version%\") | .url " -r > download.dat SET /p url=<download.dat echo Downloading .NET Core SDK version %version% for platform %platform%... echo %url% SET exe=.\installs\%version%.exe powershell -Command "(New-Object Net.WebClient).DownloadFile('%url%', '%exe%')" echo Download completed. If succeeded the installation will start shortly. start %exe% ENDLOCAL goto end :end