.NET Core: MSBuild e project.json

.NET Core ha deciso di eliminare project.json e tornare a MSBuild e * .csproj. Questo è già accaduto negli strumenti di anteprima1 di .Net Core 2.0 appena rilasciati. Questo è abbastanza deludente, perché project.json è stata una boccata d'aria fresca. Tuttavia, è comprensibile e presenta anche molti vantaggi.

Parliamo ora dei vantaggi che il cambiamento comporta:

  • Renderebbe semplice la transizione delle soluzioni Visual Studio esistenti a .NET Core.

  • Si tratta di un cambiamento enorme e consentirà anche di sfruttare gli investimenti esistenti in CI / RM basati su MSBuild.

  • Durante la compilazione in MSBuild, possiamo pensare alla compilazione incrementale, alla risoluzione delle dipendenze del tempo di compilazione, alla gestione della configurazione, ecc.

  • È necessario molto lavoro per distribuire puntualmente dotnet cli, perché non si tratta più solo di ASP.NET Core, ma anche di app console, app UWP, ecc.

Di seguito sono riportate le modifiche in MSBuild e * .csproj:

  • Il file Project.json (* .xproj) verrà sostituito da MSBuild (* .csproj).

  • Le funzionalità in project.json inizieranno a essere unite di nuovo in * .csproj.

  • Non è ancora chiaro cosa faranno riguardo all'elenco dei pacchetti, ma è stato detto che potrebbero tenerlo come json sotto nuget.json o uniscilo nel file *.csproj.

  • Presumibilmente quella transizione dovrebbe essere fluida e potenzialmente automatica se si utilizza Visual Studio.

Vantaggi di MSBuild

  • MSBuild è open source e disponibile su GitHub ed è destinato a diventare completamente multipiattaforma.

  • MSBuild semplificherà e ridurrà notevolmente la struttura di *.csproj.

  • Microsoft sta anche introducendo un nuovo sistema di progetto che consentirà molti scenari senza la necessità di Visual Studio ei dettagli sono forniti su questo Url https://github.com/dotnet/roslyn-project-system/.

  • L'obiettivo è che anche con l'installazione di MSBuild, lavorare con build e progetti sarà semplice nell'IDE di Visual Studio come al di fuori di esso.

MSBuild vs project.json

Creiamo ora un nuovo progetto console con gli strumenti .NET Core preview2 eseguendo il comando seguente.

dotnet new -t console

Per vedere tutti i file creati all'interno di questo progetto, esegui il dir comando.

Puoi vedere che vengono creati due file, Program.cs e project.json file.

Creiamo ora un'app console con gli strumenti .NET Core 2 preview1 eseguendo il comando seguente.

dotnet new console

Per vedere tutti i file creati all'interno di questo progetto, esegui il dircomando. Puoi vedere che vengono creati tre file,Program.cs, NuGet.config e MSBuild.csproj invece del file project.json.

Facciamo ora un confronto project.json e MSBuild.csproj file fianco a fianco.

A sinistra abbiamo il file in formato json mentre a destra il file è in formato XML. Puoi vedere che nel file project.json, all'interno della sezione delle dipendenze, c'ènetcoreapp1.0, mentre nel file MSBuild.csproj, vedrai il file netcoreapp2.0.