DEV Community

Sergio Castillo
Sergio Castillo

Posted on • Updated on

Depuración remota con Visual Studio Code contra una Raspberry Pi (ARM) usando .NET Core (Parte 1)

Introducción

Por diversas circunstancias, llevo un tiempito trasteando con cachivaches varios como Raspberry Pi, ESP-32 y algunos de sus complementos, y me he dado cuenta de que, o voy escribiendo algunas cosas, o difícilmente voy a acordarme de todo cuando lo necesite de verdad.

El propósito de este post y sus continuaciones, (aún no tengo claro cuanto va a durar la serie, unos 3 o 4 posts), es documentar la configuración de Visual Studio Code para desarrollar con .NET Core contra una Raspberry Pi (3 model B+), depurando la ejecución en remoto contra el propio dispositivo RPi, y ya de paso probar las librerías dotnet/IoT:

En concreto, en este artículo me voy a ocupar de la instalación de .NET Core en el mini PC sobre el sistema operativo raspbian, algo que no es del todo trivial...

Hardware

Para toda la serie de posts, este va a ser el hardware utilizado:

  • Un equipo en el que se pueda trabajar cómodamente con Visual Studio Code. Yo lo he probado con Windows y Linux, pero sospecho que con Mac también debería funcionar
  • Raspberry Pi 3 Model B+, con el SO raspbian (yo lo suelo instalar con noobs)
  • Pimoroni Explorer HAT Pro: Esto no es necesario para la demo en sí de depuración remota, pero ya lo tenía por casa y simplifica algunas cosillas para informáticos con nulos conocimientos en electrónica como yo, a la hora de jugar con leds, motores, sensores, etc...

Raspberry Pi + Pimoroni Explorer HAT Pro

Instalación del SDK de .NET Core en la Raspberry Pi

He extraído los pasos de este post de Scott Hanselman, así que los recopilo y ordeno a continuación:

  1. Instalar en la Raspberry Pi algunos paquetes necesarios (requisitos previos, una sola vez), desde la línea de comandos

    sudo apt-get install curl libunwind8 gettext
    
  2. Ahora vamos a obtener los binarios necesarios para instalar .NET sobre raspbian. Desde cualquier navegador de internet, navegar a la siguiente URL: https://dotnet.microsoft.com/download/dotnet-core/2.2

    • Observa que puedes trabajar con versiones anteriores (o futuras) de .NET Core tan solo modificando la parte final de la URL (/2.1, /2.0...)
  3. Accede a los links de descarga de los binarios para ARM32 para linux del SDK y del runtime de ASP.NET Core (este último no es necesario si no vas a desarrollar aplicaciones WEB/WEB API), de la versión específica que quieras instalar...
    image

  4. Para cada uno de ellos, aterrizarás en una página como esta, en la que debes copiar el enlace con el texto "click here to download manually"
    image

  5. Descarga los dos ficheros comprimidos en la raspberry pi

    wget https://download.visualstudio.microsoft.com/download/pr/3cb1d917-19cc-4399-9a53-03bb5de223f6/be3e011601610d9fe0a4f6b1962378ea/dotnet-sdk-2.2.401-linux-arm.tar.gz
    wget https://download.visualstudio.microsoft.com/download/pr/13798f38-c14e-4944-83c9-4f5b7c535f4d/1e1c3414f3ad791098d1f654640f9bcf/aspnetcore-runtime-2.2.6-linux-arm.tar.gz
    
  6. Descomprime los dos ficheros en el directorio dotnet del directorio HOME. Fíjate bien en las versiones si no has bajado las mismas que yo. Configura también las variables necesarias para que el SO encuentre los binarios de .NET (DOTNET_ROOT y PATH).

    mkdir -p $HOME/dotnet
    tar zxf dotnet-sdk-2.2.401-linux-arm.tar.gz -C $HOME/dotnet
    tar zxf aspnetcore-runtime-2.2.6-linux-arm.tar.gz -C $HOME/dotnet
    export DOTNET_ROOT=$HOME/dotnet 
    export PATH=$PATH:$HOME/dotnet
    
  7. Ya debería estar instalado y preparado .NET Core en la Raspberry Pi. Compruébalo ejecutando el comando dotnet --info (nótese que tengo instaladas las versiones 2.2 y 2.1 tanto del SDK como del runtime de ASP.NET Core):

    pi@harlequin:~ $ dotnet --info
    .NET Core SDK (reflecting any global.json):
    Version:   2.2.401
    Commit:    729b316c13
    
    Runtime Environment:
    OS Name:     raspbian
    OS Version:  9
    OS Platform: Linux
    RID:         linux-arm
    Base Path:   /home/pi/dotnet/sdk/2.2.401/
    
    Host (useful for support):
    Version: 2.2.6
    Commit:  7dac9b1b51
    
    .NET Core SDKs installed:
    2.1.801 [/home/pi/dotnet/sdk]
    2.2.401 [/home/pi/dotnet/sdk]
    
    .NET Core runtimes installed:
    Microsoft.AspNetCore.All 2.1.12 [/home/pi/dotnet/shared/Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.2.6 [/home/pi/dotnet/shared/Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.App 2.1.12 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.2.6 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 2.1.12 [/home/pi/dotnet/shared/Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.2.6 [/home/pi/dotnet/shared/Microsoft.NETCore.App]
    
    To install additional .NET Core runtimes or SDKs:
    https://aka.ms/dotnet-download
    

En el próximo post, veremos como preparar y compilar cómodamente en un PC una aplicación de consola de .NET Core y desplegarla en la Raspberry Pi.

Top comments (0)