Raspberry Pi – Instalando .NET y Hola mundo en C#

En esta entrado instalaremos todo lo necesario para hacer correr nuestras aplicaciones en c# dentro de la RPi , lo primero sera saber la arquitectura que tenemos en nuesta pi

uname -a 

root@pi2w1:/home/antonio# uname -a
Linux pi2w1 5.10.103-v7+ #1529 SMP Tue Mar 8 12:21:37 GMT 2022 armv7l GNU/Linux

Si el resultado es aarch64 GNU/Linux entonces es de 64 bits , si es armv7l GNU/Linux como en este caso es de 32 bits.

Iremos a esta pagina para localizar el paquete correcto que deseemos ( SDK o runtime ) https://dotnet.microsoft.com/en-us/download/dotnet/3.1

El enlace nos lleva a una pagina de descarga donde copiaremos el direct link , en este caso seria este

Ejecutaremos estos comandos

wget https://download.visualstudio.microsoft.com/download/pr/97d3b167-5605-4de4-a735-04c540f274f3/99dd9fd5195f8725254b4f8d5897bf97/dotnet-runtime-3.1.23-linux-arm.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-runtime-3.1.23-linux-arm.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

Si queremos añadir permanentemente el comando al perfil de la shell deberemos añadirlos a .bashrc

nano ~/.bashrc

Y lo añadiremos al final del archivo

# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
alias velocidad='vnstat -l -i'
alias arbol='tree -dh --du'
alias ficheros_grandes='du -ak | sort -nr | head -100'
alias info_discos='lsblk -o RM,RO,MODEL,NAME,LABEL,FSTYPE,MOUNTPOINT,SIZE,PHY-SEC,LOG-SEC,MODE,OWNER,GROUP,UUID'
alias discos='parted -l'
alias espacio='df . -h'
alias buscar='sudo find / -name '

export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$HOME/.dotnet

y recargaremos la sesión de terminal con los nuevos ajustes

source ~/.bashrc

Con el comando dotnet –info nos devolverá información de la instalación del .NET en nuestra pi

Ahora crearemos un proyecto de prueba llamado Hola Mundo

Automáticamente ya nos creara el código para nuestra primera prueba

using System;

namespace Hola_Mundo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Iremos a Proyecto / Propiedades / Compilación / Avanzadas y no aseguraremos que información de depuración este como Portable

Si lo compilamos veremos que nos ha creado correctamente la dll

Ahora llega la hora de transferirlo a nuestra pi , se puede hacer de varias formas , de momento lo haremos con el comando de PuTTY’s pscp

Si no lo tenéis lo podéis descargar de aqui

crearemos el directorio de destino

root@pi2w1:/home/antonio# mkdir net/holamundo

y alli nos tocara transferir el contenido con el comando pscp

pscp  -r -P 22 -pw TU_CONTRASEÑA .\bin\Debug\netcoreapp3.1\*.*  antonio@192.168.1.111:/home/antonio/net/holamundo
C:\Users\Antonio\Hola Mundo>pscp  -r -P 22 -pw TU_CONTRASEÑA .\bin\Debug\netcoreapp3.1\*.*  antonio@192.168.1.111:/home/antonio/net/holamundo
Hola Mundo.deps.json      | 0 kB |   0.4 kB/s | ETA: 00:00:00 | 100%
Hola Mundo.dll            | 4 kB |   4.5 kB/s | ETA: 00:00:00 | 100%
Hola Mundo.exe            | 170 kB | 170.5 kB/s | ETA: 00:00:00 | 100%
Hola Mundo.pdb            | 9 kB |   9.3 kB/s | ETA: 00:00:00 | 100%
Hola Mundo.runtimeconfig. | 0 kB |   0.3 kB/s | ETA: 00:00:00 | 100%
Hola Mundo.runtimeconfig. | 0 kB |   0.2 kB/s | ETA: 00:00:00 | 100%

Comprobamos que estén los ficheros

y ejecutamos la aplicación con dotnet Hola\ Mundo.dll , y tendremos que ver nuestro Hola mundo ejecutándose

Con esto y un bizcocho …………

https://dev.to/kash/depuracion-remota-con-visual-studio-code-contra-una-raspberry-pi-arm-usando-net-core-parte-2-4l4d