ASP.NET Core en Linux

Hace un tiempo comencé a usar Linux como SO en mi trabajo y como .netero de larga data extrañaba un poco a mi viejo y querido ASP.NET.

Por lo tanto me decidí a instalar y configurar .NET Core y levantar un proyecto ASP.NET Core. Con la ayuda de mi compañero @camboris nos pusimos manos a la obra y decidí documentar el paso a paso para quienes tengan intención de trabajar fuera de Windows. No quiero dejar de mencionar a @ealsur que me dio una mano como siempre.

Importante

La instalación la realice sobre Ubuntu, por lo tanto vamos a usar el comando apt-get que es una herramienta de Debian (la distro en la que se basa ubuntu). Si usan una derivada de Redhat tendrán que usar rpm o yum y si usan Arch (como @camboris) esta pacman.

Primer paso, instalar DNVM (.NET Version Manager).

DNVM nos permite instalar y configurar las diferentes versiones del runtime de .NET en Linux.

Los comandos a ejecutar son los siguientes:

1. Instalar unzip y curl en caso de que no lo tengamos:

sudo apt-get install unzip curl

2. Descargar e instalar DNVM:

curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh

En caso de que todo haya salido bien, se nos debería presentar lo siguiente:

Instalando DNVM

DNVM nos proporciona un conjunto de utilidades de línea de comandos que nos permiten configurar nuestro entorno de ejecución .NET (DNX) posibilitándonos el desarrollo de aplicaciones .NET Core en otro tipo de plataformas (en nuestro caso Linux).

Instalando DNX (.NET Execution Environment)

.NET Execution Environment (DNX) nos permite compilar y ejecutar nuestros proyectos .NET. Vamos a utilizar DNVM para instalar DNX para .NET Core (también esta la posibilidad de hacerlo para Mono).

1. Instalar los paquetes requeridos por DNX:

sudo apt-get install libunwind8 gettext libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev

2. Usamos DNVM para instalar DNX (.NET Core):

dnvm upgrade -r coreclr

Realizado esto tendremos disponible la el entorno de ejecución de .NET Core listo para usar. Podemos ejecutar el comando dnx para verificar que todo este correcto:

Ejecutando el comando DNX

DNX contiene todo el código necesario para inicializar y ejecutar nuestras aplicaciones .NET (compilation system, SDK tools, native CLR hosts).

Nos permite tener diferentes ambientes (.NET Framework, .NET Core, Mono) en diferentes plataformas (Windows, Linux, Mac).

DNX entre otras cosas nos proporciona comandos que nos serán útiles:

dnu restore (descarga los paquetes que estoy utilizando en mi aplicación)
dnx run (ejecuta una aplicación .NET)
dnx web (ejecuta una aplicación web)

Podemos usar el siguiente comando de DNVM para listar los DNX instalados y cual esta activo:

dnvm-list

Instalar Libuv

Libuv es una librería multiplataforma que se encarga de abstraer la comunicación de IO – memoria, acceso a files, etc – con el SO, y Kestrel – el servidor que hostea ASP.NET 5 – va montado sobre la misma, de ahí la nececidad de instalarlo.

Para proceder a la instalación hay que ejecutar los siguientes comandos:

sudo apt-get install make automake libtool curl 
curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src 
cd /usr/local/src/libuv-1.8.0 
sudo sh autogen.sh 
sudo ./configure 
sudo make 
sudo make install 
sudo rm -rf /usr/local/src/libuv-1.8.0 && cd ~/
sudo ldconfig

Instalando Visual Studio Code

Descargar Visual Studio Code desde https://code.visualstudio.com/Download

Descomprimir el contenido de la descarga y almacenarlo en una carpeta determinada (en el ejemplo dentro de opt/vscode):

sudo unzip VSCode-linux-x64.zip -d /opt/vscode

Ejecutamos el executable Code para levantar la aplicación:

Visual Studio Code

Scaffolding Applications usando Yeoman

Tengamos en cuenta que Visual Studio Code no tiene la capacidad de crear las plantillas iniciales de nuestros proyectos, por lo tanto necesitamos de una herramienta que lo haga, es ahí donde entra en juego Yeoman.

Pero antes de poder trabajar con Yeoman, necesitamos instalar NodeJS (ya que necesitamos trabajar con el gestor de paquetes npm).

1. Instalando Node (y npm) en Ubuntu (utilizando repo externo)

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -sudo apt-get install -y nodejs

Más info: https://github.com/nodesource/distributions#debinstall

2. Instalando Yeoman

npm install -g yo bower grunt-cli gulp

Cuando bajamos Yeoman también estamos descargando Bower, Grunt y Gulp.

3. Instalando el generador de proyectos ASP.NET 5

npm install -g generator-aspnet

Ahora vamos a ejecutar el siguiente comando sobre el directorio donde queremos crear nuestra aplicación:

yo aspnet

Y luego elegimos el tipo de proyectos que queremos crear:

Yeoman

Corriendo nuestra aplicación

Ya en Visual Studio Code abrimos el directorio donde creamos nuestra aplicación y vamos a trabajar sobre la misma. Para ejecutar la aplicación, voy a usar los comandos que nos ofrece DNX:

dnu restore (descarga los paquetes)
dnx web (ejecuta una aplicación)

dnx-web

Nuestra aplicación corriendo (en el puerto 5000):

Aplicación ASP.NET corriendo en Linux

A partir de este momento ya tenemos todo listo para comenzar a trabajar en nuestra aplicación.

¡Espero que les sea de utilidad!

Articulo originalmente publicado en Channel9 .

Anuncios

13 comentarios en “ASP.NET Core en Linux

    • Me alegra mucho que te haya sido de utilidad el post. Te cuento que por el momento Visual Studio Code no trae soporte de “Debugging” para ASP.NET Core:

      Debugging
      Visual Studio Code and ASP.NET Core are in preview and at this time debugging ASP.NET Core is not supported in Visual Studio Code (on any platform). Rest assured, we are working hard to bring these experiences to you in the near future.

      Habrá que estar atento a las novedades.

  1. Buenas! gracias por el tutorial! la proxima semana estaré un poco más liberado asi que podré ponerlo en practica, aunque me surge una duda, Estás ejecutando Asp.NET MVC 5 o Asp.NET MVC CORE? no entiendo bien esa parte, y tambien me gustaria saber si es que hay alguna diferencia entre su sintaxis y su ejecucion, si son dos proyectos paralelos o que. Si podes con tus palabras o lo que más o menos entiendás, por que lei varias notas al respecto (como por ejemplo 3 articulos en GENBETA) y no entiendo nada, en una nota dicen una cosa y dos meses despues sacan otra en donde vuelven atras ajajaj. Gracias! poniendo el blog y el articulo en favoritos!

  2. Todo perfecto amigo Sebys, hasta el momento en el cual quiero correr la aplicacion. En mi caso elegi “Web Application” y me generó todo el directorio correctamente, pero cuando quiero ejecutar la aplicacion con los comandos “dnu” y “dnx” no me funcionan, que podria ser? seguiré intentando. Gracias por el tutorial!

      • Sip mi amigo, justo habia podido probar la nueva version de con Dotnet y corre perfectamente, en la documentacion oficial está este primer paso para correr a .netCore, lo que si no está prevista la posibilidad de necesitar una libreria que toca instalarla por fuera. Tampoco habla de utiliar Yeoman para bajar el repositorio .net mvc core, me parece que ahi lo bajan mediante Git.

        Linda guia mi amigo! solo necesitarias cambiar la instalacion de Dotnet y ya estaria actualizada. Saludos!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s