¿Intentando crear un proyecto ASP.NET 5 desde cero con Mac? No estás solo. A continuación puedes encontrar una pequeña guía paso a paso para poner en marcha tu primera aplicación ASP.NET 5 en Mac. ¡Es muy fácil!

**OBSOLETO. ADVERTENCIA: El 28 de enero de 2016, **el Readme.md del proyecto DNX se modificó anunciando la retirada de DNX a favor de “dotnet-cli”. Los pasos aquí expuestos funcionan con ASP.NET Core RC1. No se garantiza con que versiones más recientes los pasos aquí expuestos funcionen.

DNX (retired)

The DNX is being retired in favor of the new dotnet CLI command line tools. See:

As a result, we’re not accepting anymore changes to this project. Please file any new issues on http://github.com/dotnet/cli.

Prerequisitos

¡Actualizado!. Revisa este nuevo post con el paso a paso detallado para configurar un entorno de desarrollo .NET Core 1.0 para Mac.

Crear el proyecto: Archivo > Nuevo… WTF?

Ahora abrimos nuestro nuevo y flamante Visual Studio Code para Mac. Vamos decididos a crear nuestro nuevo proyecto. Archivo… (Nuevo archivo, Nueva ventana, Abrir, Abrir reciente, Guardar…). Espera, ¿solo puedo abrir?.

Sí… las cosas ahora no funcionan de la misma forma que antes. Solo podemos abrir una carpeta física, en la que se encuentra un proyecto ya creado:

vscode-file-menu

La vía recomendada para crear un proyecto ASP.NET es utilizar Yeoman y los ASP.NET Generators que deberíamos tener ya instalados (ver lista de prerequisitos):

Sergios-MacBook-Pro:WebApplicationBasic Sergio$ yo aspnet --grunt ----- | | .--------------------------. |--(o)--| | Welcome to the | ---------´ | marvellous ASP.NET 5 | ( _´U_ ) | generator! | /A\ '--------------------------' | ~ | '..'_ ´ |° ´ Y ? What type of application do you want to create? (Use arrow keys) Empty Application Console Application Web Application ❯ Web Application Basic [without Membership and Authorization] Web API Application Nancy ASP.NET Application Class Library Unit test project

Por defecto, el generador Yeoman para ASP.NET utilizan Gulp. Si quieres utilizar Grunt, debes especificar con la opción –grunt cuando vas a lanzar yo

Introduciremos el nombre del nuevo proyecto y pulsaremos “Enter”. Por ejemplo, WebApplicationBasic. Esto nos habrá creado una carpeta con el proyecto ASP.NET, que vamos a abrir con VSCode:

File > Open…vscode-file-menu

Y localizamos la carpeta que Yeoman acaba de generar. Importante: debemos seleccionar la carpeta completa. La carpeta es como nuestro antiguo fichero “.csproj” de Visual Studio.

No. el fichero .sln ya no existe. Tampoco el .csproj.
Por tanto, importante: ¡Debemos seleccionar la carpeta completa!

vscode-open-folder

Ahora ya tenemos nuestro proyecto cargado en VSCode, listo para editar:

vscode-project-loaded

Project.json: El nuevo archivos CSPROJ

Como comentábamos anteriormente, el fichero CSJPRO que todos conocíamos en .NET desaparece, dejando paso a una carpeta completa, con un archivo de propiedades denominado Project.json. En este archivo de la DNX se definen los metadatos, información de compilación, dependencias… todo lo relativo al proyecto en cuestión, en formato JSON:

{ "version": "1.0.0-*", "compilationOptions": { "emitEntryPoint": true }, "tooling": { "defaultNamespace": "WebApplicationBasic" }, "dependencies": { "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", "Microsoft.Extensions.Logging": "1.0.0-rc1-final", "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final" }, "commands": { "web": "Microsoft.AspNet.Server.Kestrel" }, "frameworks": { "dnx451": {}, "dnxcore50": {} }, "exclude": [ "wwwroot", "node_modules", "bower_components" ], "publishExclude": [ "node_modules", "bower_components", ".xproj", ".user", "**.vspscc" ], "scripts": { "prepublish": [ "npm install", "bower install", "grunt default" ] } }

Por defecto nuestra plantilla incluye un comando, “web”, que permite lanzar este sitio utilizando el servidor Kestrel (el servidor “IIS” fuera del mundo Windows).

Lanzando el proyecto

Pulsando F1 (Fn + F1), aparecerá el menú de acciones rápidas de Visual Studio Code. Aquí escribiremos “dnx” para ver las opciones que podemos realizar con el runtime:

vscode-f1-dnx

En primera instancia, como solíamos hacer en Visual Studio, deberemos restaurar los paquetes NuGet de los que dependemos. Elegimos por la primera opción. “dnx: Restore Packages”. Nos aparecerá un segundo diálogo preguntándonos por el comando concreto que queremos ejecutar:

vscode-dnu-restore

Esto lanzará automáticamente un nuevo Terminal con el comando concreto que necesitamos:

cd '/Users/Sergio/Projects/WebApplicationBasic' ; /Users/Sergio/.dnx/runtimes/dnx-mono.1.0.0-rc1-final/bin/dnu restore find: /usr/local/lib/dnx/runtimes: No such file or directory Sergios-MacBook-Pro:~ Sergio$ cd '/Users/Sergio/Projects/WebApplicationBasic' ; /Users/Sergio/.dnx/runtimes/dnx-mono.1.0.0-rc1-final/bin/dnu restore Microsoft .NET Development Utility Mono-x64-1.0.0-rc1-16202 CACHE https://api.nuget.org/v3/index.json Restoring packages for /Users/Sergio/Projects/WebApplicationBasic/project.json Writing lock file /Users/Sergio/Projects/WebApplicationBasic/project.lock.json Restore complete, 9785ms elapsed NuGet Config files used: /Users/Sergio/.config/NuGet/nuget.config Feeds used: https://api.nuget.org/v3-flatcontainer/

Y, por último, vamos a poner en marcha nuestro servidor Kestrel para hospedar el sitio web:

F1 (Fn + F1) dnx: Run > dnx web – (WebApplicationBasic)

vscode-dnx-run-command vscode-dnx-web

Sergios-MacBook-Pro:WebApplicationBasic Sergio$ cd '/Users/Sergio/Projects/WebApplicationBasic' ; /Users/Sergio/.dnx/runtimes/dnx-mono.1.0.0-rc1-final/bin/dnx web Hosting environment: Production Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down.

Y listos. Abrimos en un navegador la ruta http://localhost:5000, y aquí está nuestro sitio web ejecutándose en Mac OS X:

osx-dnx-site

Importante: Actualmente, los sitios web no se pueden depurar con Visual Studio Code