.NET Core: MSBuild y project.json

.NET Core ha decidido eliminar project.json y volver a MSBuild y * .csproj. Esto es algo que ya sucedió en las herramientas de vista previa1 .Net Core 2.0 recién lanzadas. Esto es bastante decepcionante, porque el project.json fue un soplo de aire fresco. Sin embargo, es comprensible y también tiene muchas ventajas.

Analicemos ahora las ventajas que aporta el cambio:

  • Haría sencilla la transición de las soluciones de Visual Studio existentes a .NET Core.

  • Es un gran cambio y también permitirá aprovechar la inversión existente en CI / RM basada en MSBuild.

  • Durante la compilación en MSBuild, podemos pensar en la compilación incremental, la resolución de dependencias del tiempo de compilación, la administración de la configuración, etc.

  • Se requiere mucho trabajo para enviar dotnet cli a tiempo, porque ya no se trata solo de ASP.NET Core, sino también de aplicaciones de consola, aplicaciones para UWP, etc.

A continuación se muestran los cambios en MSBuild y * .csproj:

  • El archivo Project.json (* .xproj) será reemplazado por MSBuild (* .csproj).

  • Las características en project.json comenzarán a fusionarse nuevamente en el * .csproj.

  • Todavía no está claro qué van a hacer con la lista de paquetes, pero se mencionó que podrían mantenerla como json en nuget.json o fusionarlo en el *.csproj.

  • Supuestamente, esa transición debería ser suave y potencialmente automática si se usa Visual Studio.

Ventajas de MSBuild

  • MSBuild es de código abierto y está disponible en GitHub y está destinado a convertirse en una plataforma completamente cruzada.

  • MSBuild simplificará y recortará drásticamente la estructura del *.csproj.

  • Microsoft también está presentando un nuevo sistema de proyectos que permitirá muchos escenarios sin la necesidad de Visual Studio y los detalles se dan en esta URL. https://github.com/dotnet/roslyn-project-system/.

  • El objetivo es que incluso con la configuración de MSBuild, trabajar con compilaciones y proyectos sea tan fluido en Visual Studio IDE como fuera de él.

MSBuild vs project.json

Creemos ahora un nuevo proyecto de consola con las herramientas de .NET Core preview2 ejecutando el siguiente comando.

dotnet new -t console

Para ver todos los archivos creados dentro de este proyecto, ejecute el dir mando.

Puede ver que se crean dos archivos, Program.cs y project.json archivo.

Creemos ahora una aplicación de consola con las herramientas de .NET Core 2 preview1 ejecutando el siguiente comando.

dotnet new console

Para ver todos los archivos creados dentro de este proyecto, ejecute el dirmando. Puede ver que se crean tres archivos,Program.cs, NuGet.config y MSBuild.csproj en lugar del archivo project.json.

Ahora comparemos project.json y MSBuild.csproj archivos uno al lado del otro.

A la izquierda, tenemos el archivo en formato json mientras que a la derecha, el archivo está en formato XML. Puede ver que en el archivo project.json, dentro de la sección de dependencias, haynetcoreapp1.0, mientras que en el archivo MSBuild.csproj, verá el netcoreapp2.0.