Windows Installation Methods
#### Method 1: WinGet (Recommended)
```powershell
# List available .NET versions
winget search Microsoft.DotNet.SDK
# Install .NET 8 SDK (LTS)
winget install Microsoft.DotNet.SDK.8
# Install specific version
winget install Microsoft.DotNet.SDK.8 --version 8.0.100
# Update existing installation
winget upgrade Microsoft.DotNet.SDK.8
```
#### Method 2: Visual Studio Installer
```powershell
# Visual Studio 2022 detected at: C:\Program Files\Visual Studio\2022\Community
# .NET 8 SDK available via: Modify Installation β .NET desktop development
```
Installation steps:
- Launch Visual Studio Installer
- Click "Modify" on your installation
- Select ".NET desktop development" workload
- Apply changes
#### Method 3: Standalone Installer
```powershell
# Download: https://dotnet.microsoft.com/download/dotnet/8.0
# File: dotnet-sdk-8.0.100-win-x64.exe
# SHA512: [verification hash]
# Run installer (GUI)
.\dotnet-sdk-8.0.100-win-x64.exe
# Or silent install
.\dotnet-sdk-8.0.100-win-x64.exe /install /quiet /norestart
```
#### Method 4: PowerShell Script
```powershell
# Download install script
Invoke-WebRequest -Uri https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
# Install latest .NET 8 SDK
.\dotnet-install.ps1 -Channel 8.0
# Install to custom location
.\dotnet-install.ps1 -Channel 8.0 -InstallDir "C:\Program Files\dotnet"
# Install runtime only
.\dotnet-install.ps1 -Channel 8.0 -Runtime dotnet
```
macOS Installation Methods
#### Method 1: Official Installer Package (Recommended)
```bash
# Detected: Apple Silicon (arm64)
# Recommended: dotnet-sdk-8.0.100-osx-arm64.pkg
# Download from: https://dotnet.microsoft.com/download/dotnet/8.0
# Double-click .pkg file to install
# Verify installation location
which dotnet
# Output: /usr/local/share/dotnet/dotnet
```
#### Method 2: Homebrew
```bash
# Install Homebrew (if needed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install .NET SDK
brew install dotnet
# Install specific version (if available)
brew install dotnet@8
# Update existing installation
brew upgrade dotnet
```
#### Method 3: Install Script
```bash
# Download install script
curl -sSL https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh
chmod +x dotnet-install.sh
# Install latest .NET 8 SDK
./dotnet-install.sh --channel 8.0
# Install to custom location
./dotnet-install.sh --channel 8.0 --install-dir ~/.dotnet
# Add to PATH
echo 'export PATH="$HOME/.dotnet:$PATH"' >> ~/.zshrc
source ~/.zshrc
```
Linux Installation Methods
#### Ubuntu/Debian
```bash
# Ubuntu 22.04 LTS
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# Ubuntu 20.04 LTS
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
# Install SDK
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
# Install runtime only
sudo apt-get install -y aspnetcore-runtime-8.0
```
#### Fedora/RHEL/CentOS
```bash
# Fedora 39
sudo dnf install dotnet-sdk-8.0
# RHEL/CentOS (register Microsoft repository first)
sudo dnf install https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm
sudo dnf install dotnet-sdk-8.0
```
#### Arch Linux
```bash
# Install from official repositories
sudo pacman -S dotnet-sdk
# Install runtime only
sudo pacman -S aspnet-runtime
```
#### Alpine Linux
```bash
# Add Microsoft repository
wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
# Install .NET 8
./dotnet-install.sh --channel 8.0 --install-dir /usr/share/dotnet
# Add to PATH
export PATH="$PATH:/usr/share/dotnet"
```
Version Management with global.json
Control which .NET SDK version your project uses:
```bash
# Create global.json for .NET 8
dotnet new globaljson --sdk-version 8.0.100
# View current global.json
cat global.json
```
```json
{
"sdk": {
"version": "8.0.100",
"rollForward": "latestPatch"
}
}
```
Roll-forward policies:
latestPatch - Use latest patch (8.0.x)latestFeature - Use latest feature band (8.x.x)latestMinor - Use latest minor (x.x.x)disable - Exact version required