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 …………