root="$(cd "$(dirname "$0")/.." && pwd)" sdk=$(sed -n 's/.*"version": *"\([^"]*\)".*/\1/p' "$root/global.json" | head -n 1) has_sdk() { [ -x "$1/dotnet" ] && [ -w "$1" ] && (cd "$root" && "$1/dotnet" --version >/dev/null 2>&1); } dotnet_dir="" for candidate in "$DOTNET_ROOT" "$HOME/.dotnet"; do if [ -n "$candidate" ] && has_sdk "$candidate"; then dotnet_dir="$candidate"; break; fi done if [ -z "$dotnet_dir" ]; then dotnet_dir="$HOME/.dotnet" echo ".NET SDK $sdk not found: installing it into $dotnet_dir" script=$(mktemp "${TMPDIR:-/tmp}/dotnet-install.XXXXXX") curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$script" bash "$script" --version "$sdk" --install-dir "$dotnet_dir" rm -f "$script" fi export DOTNET_ROOT="$dotnet_dir" PATH="$dotnet_dir:$PATH" DOTNET_CLI_TELEMETRY_OPTOUT=1 DOTNET_NOLOGO=1 cd "$root"