Technical Article

Installing .NET SDK on Ubuntu: A Complete Guide for Developers

Learn how to install, manage, and configure .NET SDK on Ubuntu for cross-platform development

Installing .NET SDK on Ubuntu: A Complete Guide for Developers

Microsoft’s .NET platform has evolved into a powerful cross-platform development framework, making it essential for developers working on Ubuntu systems. Whether you’re building web applications, desktop software, or cloud services, having the .NET SDK properly installed is crucial for modern development workflows.

Understanding .NET SDK

What is .NET SDK?

The .NET Software Development Kit (SDK) is a collection of tools, libraries, and runtime components that enable developers to create applications for multiple platforms. It includes:

  • .NET Runtime: The execution environment for .NET applications
  • Development Tools: Compilers, debuggers, and build tools
  • Framework Libraries: Pre-built libraries for common functionality
  • Package Manager: NuGet for managing dependencies

.NET vs .NET Framework

  • .NET (Core): Cross-platform, open-source, modern
  • .NET Framework: Windows-only, legacy platform

Prerequisites

System Requirements

Before installing .NET SDK, ensure your Ubuntu system meets these requirements:

  • Ubuntu Version: 18.04 LTS or later (20.04 LTS recommended)
  • Architecture: x64, ARM32, or ARM64
  • Memory: At least 1 GB RAM (2 GB recommended)
  • Storage: 2 GB free space

Update System

First, update your Ubuntu system:

sudo apt update
sudo apt upgrade -y

Installation Methods

The easiest way to install .NET SDK on Ubuntu is through the official Microsoft package repository.

Step 1: Add Microsoft Package Repository

# Download and install the Microsoft package signing key
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

Step 2: Update Package Sources

sudo apt update

Step 3: Install .NET SDK

Install the latest .NET SDK:

sudo apt install dotnet-sdk-6.0

For specific versions:

# Install .NET 6.0 SDK
sudo apt install dotnet-sdk-6.0

# Install .NET 7.0 SDK
sudo apt install dotnet-sdk-7.0

# Install .NET 8.0 SDK
sudo apt install dotnet-sdk-8.0

Method 2: Using Snap (Alternative)

If you prefer using Snap packages:

# Install .NET SDK via Snap
sudo snap install dotnet-sdk --classic

# Or install specific version
sudo snap install dotnet-sdk --channel=6.0/stable --classic

Method 3: Manual Installation

For advanced users who need specific versions or custom configurations:

Step 1: Download .NET SDK

# Create directory for .NET
mkdir -p $HOME/dotnet

# Download .NET SDK (replace URL with desired version)
wget https://download.microsoft.com/download/6/4/c/64c03c9e-9302-4cc3-a61a-4b40a5b7d6c5/dotnet-sdk-6.0.419-linux-x64.tar.gz

# Extract to directory
tar zxf dotnet-sdk-6.0.419-linux-x64.tar.gz -C $HOME/dotnet

Step 2: Add to PATH

# Add to .bashrc
echo 'export DOTNET_ROOT=$HOME/dotnet' >> $HOME/.bashrc
echo 'export PATH=$PATH:$HOME/dotnet' >> $HOME/.bashrc

# Reload shell configuration
source $HOME/.bashrc

Verification and Testing

Check Installation

Verify that .NET SDK is properly installed:

# Check .NET version
dotnet --version

# Check available SDKs
dotnet --list-sdks

# Check available runtimes
dotnet --list-runtimes

Create Test Application

Create a simple test application to verify everything works:

# Create new console application
dotnet new console -n HelloWorld
cd HelloWorld

# Build the application
dotnet build

# Run the application
dotnet run

Expected output:

Hello, World!

Managing Multiple .NET Versions

Installing Multiple SDKs

You can install multiple .NET SDK versions side by side:

# Install .NET 6.0 SDK
sudo apt install dotnet-sdk-6.0

# Install .NET 7.0 SDK
sudo apt install dotnet-sdk-7.0

# Install .NET 8.0 SDK
sudo apt install dotnet-sdk-8.0

Using Specific Versions

Specify which .NET version to use for a project:

# Create project with specific version
dotnet new console -n MyProject --framework net6.0

# Or specify in global.json
echo '{"sdk": {"version": "6.0.419"}}' > global.json

Global.json Configuration

Create a global.json file to specify SDK version for your project:

{
  "sdk": {
    "version": "6.0.419",
    "rollForward": "latestFeature"
  }
}

Development Tools and IDEs

Visual Studio Code

VS Code is an excellent choice for .NET development on Ubuntu:

# Install VS Code
sudo snap install code --classic

# Install C# extension
code --install-extension ms-dotnettools.csharp

JetBrains Rider

For a full-featured .NET IDE:

# Install Rider via Snap
sudo snap install rider --classic

# Or download from JetBrains website
wget https://download.jetbrains.com/rider/JetBrains.Rider-2023.1.4.tar.gz
tar -xzf JetBrains.Rider-2023.1.4.tar.gz

Command Line Tools

Essential command line tools for .NET development:

# Install additional tools
dotnet tool install -g dotnet-ef
dotnet tool install -g dotnet-watch
dotnet tool install -g dotnet-format

Common Development Scenarios

Web Development with ASP.NET Core

# Create new web application
dotnet new webapp -n MyWebApp
cd MyWebApp

# Run the application
dotnet run

API Development

# Create new Web API
dotnet new webapi -n MyApi
cd MyApi

# Add Entity Framework
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Desktop Development

# Create WPF application (Windows Forms also available)
dotnet new wpf -n MyDesktopApp
cd MyDesktopApp

# Build and run
dotnet build
dotnet run

Troubleshooting Common Issues

Issue 1: Package Repository Not Found

If you encounter repository issues:

# Remove existing repository
sudo rm /etc/apt/sources.list.d/microsoft-prod.list

# Re-add repository
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
sudo apt update

Issue 2: Permission Denied

If you get permission errors:

# Check current user permissions
whoami
groups

# Add user to appropriate groups if needed
sudo usermod -a -G sudo $USER

Issue 3: PATH Issues

If dotnet command is not found:

# Check if dotnet is in PATH
which dotnet

# Add to PATH manually if needed
export PATH=$PATH:/usr/share/dotnet

Issue 4: Version Conflicts

Resolve version conflicts:

# Remove conflicting packages
sudo apt remove dotnet-sdk-*

# Clean package cache
sudo apt clean
sudo apt autoremove

# Reinstall desired version
sudo apt install dotnet-sdk-6.0

Performance Optimization

Build Performance

Optimize build times:

# Enable parallel builds
export DOTNET_CLI_TELEMETRY_OPTOUT=1

# Use incremental builds
dotnet build --no-restore

# Enable build caching
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1

Runtime Performance

Optimize runtime performance:

# Enable tiered compilation
export DOTNET_TieredCompilation=1

# Enable ReadyToRun
dotnet publish -c Release -r linux-x64 --self-contained

Security Considerations

Package Verification

Verify package integrity:

# Check package signature
dpkg-sig --verify packages-microsoft-prod.deb

# Verify Microsoft GPG key
gpg --keyserver keyserver.ubuntu.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893

Updates and Maintenance

Keep .NET SDK updated:

# Update package list
sudo apt update

# Upgrade .NET SDK
sudo apt upgrade dotnet-sdk-*

# Check for security updates
sudo apt list --upgradable

Best Practices

1. Version Management

  • Use LTS Versions: Prefer Long Term Support versions for production
  • Stay Updated: Regularly update to latest patches
  • Test Compatibility: Verify application compatibility before upgrading
  • Document Versions: Keep track of used versions

2. Development Workflow

  • Use Global.json: Specify SDK versions per project
  • Leverage Tools: Use dotnet tools for common tasks
  • CI/CD Integration: Include .NET in your CI/CD pipeline
  • Code Quality: Use dotnet-format and analyzers

3. System Maintenance

  • Regular Updates: Keep system and .NET updated
  • Clean Unused: Remove unused SDK versions
  • Monitor Space: Check disk space usage
  • Backup Configurations: Backup important configurations

Conclusion

Installing .NET SDK on Ubuntu opens up a world of cross-platform development possibilities. By following this guide, you’ll have a robust .NET development environment that supports modern application development.

Key Takeaways

  1. Multiple Installation Methods: Choose the method that best fits your needs
  2. Version Management: Install and manage multiple .NET versions
  3. Development Tools: Set up proper IDE and tooling
  4. Troubleshooting: Know how to resolve common issues
  5. Best Practices: Follow recommended practices for optimal experience

Quick Reference Commands

# Install .NET SDK
sudo apt install dotnet-sdk-6.0

# Check version
dotnet --version

# Create new project
dotnet new console -n MyProject

# Build and run
dotnet build
dotnet run

For more information and advanced configurations, refer to the official .NET documentation.