martes, 31 de enero de 2017
Para los que ya hemos comenzado a crear aplicaciones y bibliotecas ASP.NET Core, este cambio implica que en algún momento deberemos actualizarlas al nuevo formato de proyectos. Y como ya adelantamos, este proceso no va a resultar especialmente doloroso aunque obviamente tendremos que saber cómo hacerlo.
En este post vamos a tratar tres posibles escenarios de actualización:
Hey, pero antes de continuar, el tradicional disclaimer: tened en cuenta que tanto Visual Studio 2017 como el tooling de .NET Core está aún en preview, así que hay cosas que podrían variar en el futuro próximo.
1. Migrar de project.son a .csproj utilizando Visual Studio 2017
Visual Studio 2017, que en el momento de escribir estas líneas aún va por la versión RC3 (enero 2017), incluye un sistema de migración automática unidireccional en un único paso.
En otras palabras, cuando intentemos abrir un proyecto .NET Core basado en el tándem project.json/.xproj, aparecerá un cuadro de diálogo solicitándonos confirmación para realizar la migración de forma automática.
Si cancelamos, simplemente el proyecto no se abrirá, pero, si decidimos continuar, Visual Studio creará el archivo .csproj partiendo de la configuración existente y eliminará los archivos anteriores, por lo que no podremos volver a abrir el proyecto desde versiones del IDE que no soporte el nuevo .csproj (por ejemplo, VS2015 con el tooling sin actualizar).
Además, en la carpeta del proyecto encontraremos un archivo de log con el resultado de la migración, y una carpeta
Backup
con la copia de seguridad de los archivos de configuración originales (tanto project.son como .xproj).Por cierto, no he podido confirmar si este sistema de migración automática se incluirá también en Visual Studio 2015, aunque hay algunas pistas que indican que no :(
Aprovecho también para comentar que el nuevo Visual Studio 2017 integrará de forma bastante natural el nuevo formato de proyectos .csproj. A diferencia de versiones anteriores, donde para editar este archivo nos veíamos obligados a descargar el proyecto completo, ahora podemos hacerlo desde el propio IDE:
Al salvar los cambios, éstos serán aplicados sin necesidad de recargar el proyecto ni nada parecido :)
2. Migrar de project.json a .csproj mediante línea de comandos
Pues esta también es de las fáciles :)El tooling de .NET Core incluye el comando
dotnet migrate
que, ejecutado en el directorio raíz del proyecto o solución, migrará automáticamente los archivos de proyecto al nuevo formato, salvando una copia de los archivos previos de configuración en la carpeta backup
:C:\Proyects\Test>dir El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: AA8B-7BC7 Directorio de C:\Projects\Test 28/01/2017 18:26 <DIR> . 28/01/2017 18:26 <DIR> .. 28/01/2017 18:26 246 Program.cs 28/01/2017 18:26 297 project.json 2 archivos 543 bytes 2 dirs 25.383.387.136 bytes libres C:\Proyects\Test>dotnet migrate Project Test migration succeeded (C:\Projects\Test) Summary Total Projects: 1 Succeeded Projects: 1 Failed Projects: 0 C:\Proyects\Test>dir El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: AA8B-7BC7 Directorio de C:\Projects\Test 28/01/2017 18:26 <DIR> . 28/01/2017 18:26 <DIR> .. 28/01/2017 18:26 <DIR> backup 28/01/2017 18:26 246 Program.cs 28/01/2017 18:26 844 Test.csproj 2 archivos 1.090 bytes 3 dirs 25.383.387.136 bytes libres C:\Proyects\Test>Este comando también podemos ejecutarlo sobre una solución si lo invocamos desde la carpeta que contiene el archivo
global.json
. Sin embargo, hay que tener en cuenta que la versión de tooling que indiquemos en dicho archivo será la utilizada para ejecutar el comando, por lo que si se trata de una versión antigua nos encontraríamos con un error como el siguiente:C:\Projects\MySolution>dotnet migrate No executable found matching command "dotnet-migrate" C:\Projects\MySolution>Para solucionarlo, basta con actualizar la versión del tooling en este archivo a una que sí soporte ya el comando de migración, como en el siguiente ejemplo:
{ "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-preview4-004233" } }Una vez hecho, ya podrá ejecutarse
dotnet migrate
sin problema.3. Migrar de project.json a .csproj manualmente
Si sois de los que pensáis que las herramientas están sobrevaloradas, esta es vuestra solución ;DNo, en serio, no hay ningún motivo para tener que hacer esta migración manualmente, pero si aún así estáis interesados en ello, observad que cualquiera de las opciones que hemos visto anteriormente al final lo único que hacen es jugar con archivos de texto, y eso es algo que siempre podríamos hacer de forma manual. Además, será una buena excusa para dominar el nuevo formato y aprender a hacer sobre el .csproj las cosas que ya conocíamos en project.json.
De hecho, cada propiedad de project.json se mapea de forma directa a un componente de .csproj, por lo que al final se trata sólo de hacer una traducción; como referencia, Nate McMaster publicó hace unos días una guía de conversión de project.json a MSBuild (.csproj) que puede ser de mucha utilidad para conocer las equivalencias entre ambos formatos y poder editar este último con maestría ;)
Publicado en Variable not found.
Aún no hay comentarios, ¡sé el primero!
Enviar un nuevo comentario