Deploy .NET apps to Raspberry Pi

Deployment of .NET apps to Raspberry Pi is identical to that of any other platform. Your app can run as self-contained or framework-dependent deployment modes. There are advantages to each strategy. For more information, see .NET application publishing overview.

Deploying a framework-dependent app

To deploy your app as a framework-dependent app, complete the following steps:

  1. Ensure SSH is enabled on your Raspberry Pi. If needed, refer to Enable SSH in the Raspberry Pi documentation .

  2. Install .NET on the Raspberry Pi using the dotnet-install scripts. Complete the following steps from a Bash prompt on the Raspberry Pi (local or SSH):

    1. Run the following command to install .NET:

      curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin
      

      Note

      This installs the latest version. If you need a specific version, add --version <VERSION> to the end, where <VERSION> is the specific build version.

    2. To simplify path resolution, add a DOTNET_ROOT environment variable and add the .dotnet directory to $PATH with the following commands:

      echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
      echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
      source ~/.bashrc
      
    3. Verify the .NET installation with the following command:

      dotnet --version
      

      Verify the displayed version matches the version you installed.

  3. Publish the app on the development computer as follows, depending on development environment.

    • If using Visual Studio, deploy the app to a local folder. Before publishing, select Edit in the publish profile summary and select the Settings tab. Ensure that Deployment mode is set to Framework-dependent and Target runtime is set to Portable.
    • If using the .NET CLI, use the dotnet publish command. No additional arguments are required.
  4. Using an SFTP client, copy the files from the publish location on the development computer to a new folder on the Raspberry Pi.

    For example, to use the scp command to copy files from the development computer to your Raspberry Pi, open a command prompt and execute the following:

    scp -r /publish-location/* pi@raspberrypi:/home/pi/deployment-location/
    

    Where:

    • The -r option instructs scp to copy files recursively.
    • /publish-location/ is the folder you published to in the previous step.
    • pi@raspberypi is the user and host names in the format <username>@<hostname>.
    • /home/pi/deployment-location/ is the new folder on the Raspberry Pi.

    Tip

    Recent versions of Windows have OpenSSH, which includes scp, pre-installed.

  5. From a Bash prompt on the Raspberry Pi (local or SSH), run the app. To do this, set the deployment folder as the current directory and execute the following command (where HelloWorld.dll is the entry point of the app):

    dotnet HelloWorld.dll
    

Deploying a self-contained app

To deploy your app as a self-contained app, complete the following steps:

  1. Ensure SSH is enabled on your Raspberry Pi. If needed, refer to Enable SSH in the Raspberry Pi documentation .

  2. Publish the app on the development computer as follows, depending on development environment.

    • If using Visual Studio, deploy the app to a local folder. Before publishing, select Edit in the publish profile summary and select the Settings tab. Ensure that Deployment mode is set to Self-contained and Target runtime is set to linux-arm.

    • If using the .NET CLI, use the dotnet publish command with the -r linux-arm argument:

      dotnet publish -r linux-arm
      
  3. Using an SFTP client, copy the files from the publish location on the development computer to a new folder on the Raspberry Pi.

    For example, to use the scp command to copy files from the development computer to your Raspberry Pi, open a command prompt and execute the following:

    scp -r /publish-location/* pi@raspberrypi:/home/pi/deployment-location/
    

    Where:

    • The -r option instructs scp to copy files recursively.
    • /publish-location/ is the folder you published to in the previous step.
    • pi@raspberypi is the user and host names in the format <username>@<hostname>.
    • /home/pi/deployment-location/ is the new folder on the Raspberry Pi.

    Tip

    Recent versions of Windows have OpenSSH, which includes scp, pre-installed.

  4. From a Bash prompt on the Raspberry Pi (local or SSH), run the app. To do this, set the current directory to the deployment location and complete the following steps:

    1. Give the executable execute permission (where HelloWorld is the executable file name).

      chmod +x HelloWorld
      
    2. Run the executable.

      ./HelloWorld