C Sharp y .Net Core con Linux

.Net Core permite la portabilidad de nuestras aplicaciones ha cualquier sistemas, ya sea Linux, OSx o Windows.

La nueva versión del framework .Net nos permite desarrollar nuestras aplicaciones y poder ejecutarlas en cualquier sistema.

.Net Core logo

Como en Linux, pudiendo compilar nuestro código en las distribuciones más populares, como RedHat, Fedora, Suse, CentOS, Oracle, Debian, Linux Mint, Ubuntu, etc. .En sistemas Linux solo podremos crear aplicaciones en 64 bits. Para sistemas de microsoft podemos crear aplicaciones, no solo para pc’s, donde podemos personalizar la compilación desde versiones 7 de windows, hasta la

ultima de windows 10, pero también podemos compilar nuestros códigos para la XBox, la Raspberry Pi 3, con Windows 10, tanto para versiones de 32 como de 64. Para sistemas de apple podemos compilar para las versiones 10 de OSx, en concreto para las versiones 10.10, 10.11 y 10.12, solo en 64 bits. También podemos hacer correr nuestros programas en Android, aunque para este ultimo no esta muy preparado.

Como instalar .Net Core en Ubuntu.

En mi caso la instalación del framework de .Net Core lo he realizado en mi sistema con Ubuntu 17.04. Para ello tenemos que agregar las fuentes donde se encuentra el framework. Para que nuestro Ubuntu nos reconozca estas fuentes como fuentes seguras, lo primero que debemos hacer es agregar las firmas de estas.

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg

Una vez que ya tenemos añadidas las firmas, añadimos la direccion del repositorio donde esta alojado el framework del .Net Core.

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main" > /etc/apt/sources.list.d/dotnetdev.list'

Este repositorio es para la versión 17.04 de Ubuntu, si necesitas instalar el framework en otra versión puedes ir a esta pagina ( https://www.microsoft.com/net/core#linuxubuntu ) para encontrar las direcciones para versiones anteriores de Ubuntu.

Una vez que tengamos el repositorio cargado, actualizamos las librerías de nuestro Ubuntu.

sudo apt-get update

E instalamos el framework de .Net Core.

sudo apt-get install dotnet-sdk-2.0.0

En este caso es la versión 2.0 del .Net Core, ultima versión a la fecha de escribir este post.

Llegados a este punto ya podemos desarrollar nuestra aplicación en C#. El framework nos proporciona una serie de comandos, tanto para crear unas plantillas que nos facilitara la creación de nuestras aplicaciones, como para la compilación o la publicación de la aplicación.

Crear un nuevo proyecto con .Net Core en C#

Para probar si todo funciona correctamente, podemos crear la típica aplicación de «Hola mundo», para ellos solo tenemos que crear un proyecto de tipo «Console».

mkdir Mi_Proyecto
cd Mi_Proyecto
dotnet new console

Esta crea en la carpeta que le indiquemos un proyecto en lenguaje C# para ejecutarse en la consola de Linux, o de cualquier otro sistema compatible.

Si estamos usando la versión 1.0 de .Net Core, después de crear el nuevo proyecto, del tipo que sea, tendremos que ejecutar el comando «dotnet restore» para restaurar el árbol de dependencias del proyecto. En el caso de estar utilizando la versión 2.0, esto no es necesario, ya que este proceso esta incluido en la ejecución del comando «dotnet new».

Ejecutar el proyecto .Net Core

Para probar la aplicación podemos utilizar el comando de compilar y ejecutar nuestro.

dotnet run

Este comando compilara y ejecutara el proyecto que se encuentre en el directorio. Si queremos indicarle donde se encuentra el proyecto tendremos que utilizar le parámetro «-p» seguido de la ruta donde se encuentre nuestro proyecto.

dotnet run -p /Ruta/Donde/Esta/Nuestro/proyecto.csproj

 Publicar un proyecto en .Net Core

Para distribuir nuestro proyecto debemos crear el paquete con nuestro ejecutable y todas sus dependencias. Para esto debemos usar el comando «dotnet publish». Este comando nos creara una carpeta con todos los ficheros necesarios para la distribucion de la aplicación

dotnet publish -c Relase -o /Ruta/Carpeta/Salida -r tipo_Sistema -p Ruta/Donde/Esta/El/Proyecto.csproj

Con el parametro «-c» le indicamos que utilice la configuración para crear un compilado utilizado el tipo «Release». Si no se indica este paramentro, se utilizara por defecto «Debug».

El parámetro «-o» le indicamos la carpeta donde queremos que nos cree el paquete. Si no indicamos este parámetro lo creara en una carpeta dentro de la propia del proyecto.

El parámetro «-r» le indicamos que «runtime» o RID se va utilizar para crear la distribución. En este punto es donde le indicamos bajo que sistema operativo queremos que se ejecute nuestra distribución. Si no indicamos este parámetro, el paquete que se cree sera para el sistema operativo bajo el que estemos ejecutando el programa.

Las diferentes opciones son las siguiente:

RID de Windows
  • Portátil
  • win-x86
  • win-x64

Windows 7/Windows Server 2008 R2

  • win7-x64
  • win7-x86

Windows 8/Windows Server 2012

  • win8-x64
  • win8-x86
  • win8-arm

Windows 8.1/Windows Server 2012 R2

  • win81-x64
  • win81-x86
  • win81-arm

Windows 10/Windows Server 2016

  • win10-x64
  • win10-x86
  • win10-arm
  • win10-arm64
RID de Linux

Portátil

  • linux-x64

CentOS

  • centos-x64
  • centos.7-x64

Debian

  • debian-x64
  • debian.8-x64

Fedora

  • fedora-x64
  • fedora.24-x64
  • fedora.25-x64 (.NET Core 2.0 o versiones posteriores)
  • fedora.26-x64 (.NET Core 2.0 o versiones posteriores)

Gentoo (.NET Core 2.0 o versiones posteriores)

  • gentoo-x64

openSUSE

  • opensuse-x64
  • opensuse.42.1-x64

Oracle Linux

  • ol-x64
  • ol.7-x64
  • ol.7.0-x64
  • ol.7.1-x64
  • ol.7.2-x64

Red Hat Enterprise Linux

  • rhel-x64
  • rhel.6-x64 (.NET Core 2.0 o versiones posterores)
  • rhel.7-x64
  • rhel.7.1-x64
  • rhel.7.2-x64
  • rhel.7.3-x64 (.NET Core 2.0 o versiones posteriores)
  • rhel.7.4-x64 (.NET Core 2.0 o versiones posteriores)

Tizen (.NET Core 2.0 o versiones posteriores)

  • tizen

Ubuntu

  • ubuntu-x64
  • ubuntu.14.04-x64
  • ubuntu.14.10-x64
  • ubuntu.15.04-x64
  • ubuntu.15.10-x64
  • ubuntu.16.04-x64
  • ubuntu.16.10-x64

Derivados de Ubuntu

  • linuxmint.17-x64
  • linuxmint.17.1-x64
  • linuxmint.17.2-x64
  • linuxmint.17.3-x64
  • linuxmint.18-x64
  • linuxmint.18.1-x64 (.NET Core 2.0 o versiones posteriores)
RID de OS X
  • osx-x64 (.NET Core 2.0 o versiones posteriores)
  • osx.10.10-x64
  • osx.10.11-x64
  • osx.10.12-x64 (.NET Core 1.1 o versiones posteriores)
RID de Android (.NET Core 2.0 o versiones posteriores)
  • android
  • android.21

 

Esto seria lo básico para poder desarrollar en .Net Core bajo Linux.

Para facilitar el desarrolo en .Net  hay varias extensiones para  los principales editores que los desarrollados solemos utilizar, como puede Atom, Brackets, Sublime Text, Emacs, Vim o Visual Studio Code.