How to Run .NET on a Raspberry Pi: A Complete Guide
The Raspberry Pi is a versatile, low-cost computer that can be used for a wide range of projects, from IoT applications to home automation. If you want to develop applications using .NET on a Raspberry Pi, you’re in luck! Microsoft’s .NET platform supports ARM-based architectures, making it possible to run .NET applications on a Raspberry Pi.
In this guide, we will cover everything you need to know to get started, including installing .NET, running applications, and troubleshooting common issues.
Prerequisites
Before proceeding, make sure you have the following:
- A Raspberry Pi (Raspberry Pi 4 or 3 recommended)
- A microSD card with Raspberry Pi OS (32-bit or 64-bit)
- Internet access
- A USB keyboard and mouse (optional for setup)
- A monitor and HDMI cable (optional for setup)
Step 1: Install .NET on Raspberry Pi
Microsoft provides official support for .NET on ARM-based Linux distributions, including Raspberry Pi OS. Follow these steps to install .NET:
1.1 Update Your System
Before installing .NET, update your Raspberry Pi to ensure you have the latest software packages:
sudo apt update && sudo apt upgrade -y
1.2 Download and Install .NET SDK or Runtime
You can install either the .NET SDK (for development) or the .NET Runtime (for running applications). The SDK includes the tools necessary for compiling and debugging applications, whereas the runtime only allows running precompiled apps.
To install the .NET SDK (recommended for development):
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel LTS
To install only the .NET runtime:
./dotnet-install.sh --channel LTS --runtime dotnet
After installation, verify the installation:
~/.dotnet/dotnet --version
Step 2: Set Up Environment Variables
For easier access to .NET from the terminal, add it to your PATH
variable:
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools' >> ~/.bashrc
source ~/.bashrc
Step 3: Create and Run a .NET Application
Once .NET is installed, you can create and run your first application.
3.1 Create a New .NET Console App
dotnet new console -o MyApp
cd MyApp
3.2 Modify the Application (Optional)
Open Program.cs
using a text editor like nano:
nano Program.cs
Modify the file to display a custom message:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello from Raspberry Pi!");
}
}
Save the file and exit (Ctrl + X, then Y, then Enter).
3.3 Build and Run the Application
dotnet run
You should see the message Hello from Raspberry Pi!
printed to the terminal.
Step 4: Deploy .NET Applications on Raspberry Pi
If you want to deploy an application from another system (e.g., Windows or Mac) to the Raspberry Pi, follow these steps:
4.1 Publish the Application
On your development machine, publish the .NET application for Raspberry Pi:
dotnet publish -r linux-arm -c Release --self-contained true -o publish
For Raspberry Pi 4 (64-bit OS), use linux-arm64
instead of linux-arm
.
4.2 Transfer the Files to Raspberry Pi
Use scp
to copy the files to your Raspberry Pi:
scp -r publish pi@raspberrypi:/home/pi/MyApp
4.3 Run the Published Application
On your Raspberry Pi, navigate to the folder and execute the application:
cd MyApp
./MyApp
Step 5: Troubleshooting Common Issues
5.1 .NET Command Not Found
Ensure your PATH
variable is correctly set:
echo $PATH
If .dotnet
is missing, re-run:
export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools
source ~/.bashrc
5.2 Permission Denied Error
If you get a permission error when running the application, grant execute permission:
chmod +x MyApp
5.3 Architecture Mismatch
If you encounter an architecture-related error, verify your Raspberry Pi OS version:
uname -m
armv7l
indicates a 32-bit OS.aarch64
indicates a 64-bit OS.
Ensure you download the correct .NET version for your architecture.
Conclusion
Running .NET on a Raspberry Pi opens up numerous possibilities for building IoT and embedded applications. By following this guide, you should now be able to install .NET, create applications, and deploy them successfully on your Raspberry Pi.