.NET is a cross-platform development framework that can be installed on Windows, macOS, and Linux. This guide covers installation methods for all supported operating systems, including troubleshooting common issues.
Component | Requirement |
---|---|
OS | Windows 10+, macOS 10.15+, or Linux |
RAM | 512 MB minimum, 2 GB recommended |
Disk Space | 500 MB for SDK |
Architecture | x64, x86, ARM64 |
graph TD
A[.NET Runtime Support] --> B[Windows]
A --> C[macOS]
A --> D[Linux]
B --> B1[Windows 10/11]
B --> B2[Windows Server 2016+]
C --> C1[macOS 10.15+]
C --> C2[Intel & Apple Silicon]
D --> D1[Ubuntu 18.04+]
D --> D2[Debian 9+]
D --> D3[CentOS 7+]
D --> D4[RHEL 7+]
D --> D5[Fedora 32+]
D --> D6[SUSE Linux Enterprise 12+]
Package | Purpose | Contains |
---|---|---|
.NET Runtime | Run applications | Runtime only |
.NET SDK | Develop applications | Runtime + Tools + Compilers |
Recommendation: Install SDK for development, Runtime for production.
https://dotnet.microsoft.com/download
# Download and run the installer
# Follow the installation wizard
dotnet --version
dotnet --info
# Install Chocolatey first (if not installed)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# Install .NET SDK
choco install dotnet-sdk
# Install specific version
choco install dotnet-sdk --version=8.0.0
# Install latest SDK
winget install Microsoft.DotNet.SDK.8
# List available versions
winget search Microsoft.DotNet
# Install Scoop first
iwr -useb get.scoop.sh | iex
# Install .NET
scoop bucket add extras
scoop install dotnet-sdk
# Visual Studio includes .NET SDK
# Select ".NET desktop development" workload
# Or "ASP.NET and web development" workload
# Visit: https://dotnet.microsoft.com/download
# Select macOS installer
# Choose Intel or Apple Silicon version
# Double-click the .pkg file
# Follow installation wizard
dotnet --version
dotnet --info
# Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install .NET SDK
brew install --cask dotnet-sdk
# Install specific version
brew install --cask dotnet-sdk@8
# Verify installation
dotnet --version
# Download and extract manually
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version latest
# Add to PATH (add to ~/.zshrc or ~/.bash_profile)
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools
# Add Microsoft repository
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
# Update package index
sudo apt update
# Install .NET SDK
sudo apt install -y dotnet-sdk-8.0
# Install Runtime only
sudo apt install -y aspnetcore-runtime-8.0
# Install using Snap
sudo snap install dotnet-sdk --classic --channel=8.0
# Install Runtime only
sudo snap install dotnet-runtime-80 --classic
# Download installation script
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version latest
# Add to PATH
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools' >> ~/.bashrc
source ~/.bashrc
# Add Microsoft repository
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo wget -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
# Install .NET SDK
sudo dnf install dotnet-sdk-8.0
# Install Runtime only
sudo dnf install aspnetcore-runtime-8.0
# Add Microsoft repository
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo wget -O /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/37/prod.repo
# Install .NET SDK
sudo dnf install dotnet-sdk-8.0
# Install from AUR
yay -S dotnet-runtime dotnet-sdk
# Or using pacman (if in official repos)
sudo pacman -S dotnet-runtime dotnet-sdk
# Add community repository
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
# Update package index
apk update
# Install .NET
apk add dotnet8-sdk
# .NET SDK image for development
docker pull mcr.microsoft.com/dotnet/sdk:8.0
# .NET Runtime image for production
docker pull mcr.microsoft.com/dotnet/runtime:8.0
# ASP.NET Core Runtime for web apps
docker pull mcr.microsoft.com/dotnet/aspnet:8.0
# Run container with SDK
docker run -it mcr.microsoft.com/dotnet/sdk:8.0
# Multi-stage build example
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
# Copy project files
COPY *.csproj ./
RUN dotnet restore
# Copy source code and build
COPY . ./
RUN dotnet publish -c Release -o out
# Runtime stage
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=build /app/out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
# Install specific versions side by side
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 6.0.0
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.0
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 8.0.0
# List installed versions
dotnet --list-sdks
dotnet --list-runtimes
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMinor"
}
}
# Check .NET version
dotnet --version
# Show detailed information
dotnet --info
# List installed SDKs
dotnet --list-sdks
# List installed runtimes
dotnet --list-runtimes
# Show help
dotnet --help
# Create new console application
dotnet new console -n TestApp
cd TestApp
# Run the application
dotnet run
# Expected output: "Hello, World!"
# Check runtime information
dotnet --info
# Example output should show:
# - .NET version
# - Runtime environment
# - Host information
# - Installed workloads
# Problem: Cannot install due to permissions
# Solution: Use proper installation method or fix permissions
# For manual installation
chmod +x dotnet-install.sh
./dotnet-install.sh --version latest
# Or use sudo for system-wide installation
sudo apt install dotnet-sdk-8.0
# Problem: dotnet command not found
# Solution: Add .NET to PATH
# For bash
echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
source ~/.bashrc
# For zsh (macOS)
echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.zshrc
source ~/.zshrc
# For fish shell
set -U fish_user_paths $HOME/.dotnet $fish_user_paths
# Problem: SSL/TLS certificate errors
# Solution: Trust certificates
# Windows
certlm.msc # Import certificates
# Linux
sudo apt-get update && sudo apt-get install ca-certificates
# macOS
# Certificates usually work by default
# Problem: Wrong architecture installed
# Solution: Install correct version
# Check system architecture
uname -m
# Install correct version
# For ARM64: use arm64 installer
# For x64: use x64 installer
# Problem: Multiple .NET versions causing issues
# Solution: Use global.json or remove conflicting versions
# Create global.json to specify version
echo '{"sdk":{"version":"8.0.0"}}' > global.json
# Or remove specific version
sudo rm -rf /usr/share/dotnet/sdk/7.0.0
# Download from: https://visualstudio.microsoft.com/
# Choose appropriate edition:
# - Community (Free)
# - Professional
# - Enterprise
# Download from: https://code.visualstudio.com/
# Install C# extension
code --install-extension ms-dotnettools.csharp
code --install-extension ms-dotnettools.vscode-dotnet-runtime
# Download from: https://www.jetbrains.com/rider/
# Premium IDE with excellent .NET support
# Entity Framework Tools
dotnet tool install --global dotnet-ef
# ASP.NET Core HTTPS development certificate
dotnet dev-certs https --trust
# User secrets for development
dotnet user-secrets init
dotnet user-secrets set "ConnectionString" "Server=..."
<!-- In .csproj file -->
<PropertyGroup>
<PublishAot>true</PublishAot>
</PropertyGroup>
# Publish with ReadyToRun
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishReadyToRun=true
<PropertyGroup>
<PublishTrimmed>true</PublishTrimmed>
<TrimMode>link</TrimMode>
</PropertyGroup>
graph TD
A[Choose Installation Method] --> B{Operating System?}
B -->|Windows| C[Windows Options]
B -->|macOS| D[macOS Options]
B -->|Linux| E[Linux Options]
C --> C1[Official Installer]
C --> C2[Package Manager]
C --> C3[Visual Studio]
D --> D1[Official Installer]
D --> D2[Homebrew]
D --> D3[Manual Install]
E --> E1[Package Manager]
E --> E2[Snap]
E --> E3[Manual Install]
C1 --> F[Verify Installation]
C2 --> F
C3 --> F
D1 --> F
D2 --> F
D3 --> F
E1 --> F
E2 --> F
E3 --> F
F --> G[Create Test Project]
G --> H[Development Ready]
# Add NuGet source
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
# List configured sources
dotnet nuget list source
# Set NuGet config
dotnet nuget config
# Set default project template
dotnet new --install Microsoft.DotNet.Web.ProjectTemplates
# Configure global tools location
export DOTNET_TOOLS_PATH=$HOME/.dotnet/tools
export PATH=$PATH:$DOTNET_TOOLS_PATH
Platform | Recommended Method | Alternative Methods |
---|---|---|
Windows | Official Installer | Chocolatey, Winget, Visual Studio |
macOS | Homebrew | Official Installer, Manual |
Ubuntu/Debian | Microsoft Repository | Snap, Manual |
RHEL/CentOS | DNF Package Manager | Manual Installation |
Docker | Official Images | Custom Dockerfile |
After successful installation:
Remember to always use the latest LTS version for production applications and keep your development environment updated with security patches.