Visual Studio 2017 introduce un nuovo project system, i famosi file “proj” a cui siamo abituati. Il nuovo modello è obbligatorio per i progetti .NET Core/.NET Standard mentre è opzionale, e purtroppo la conversione è a manina, per tutti (o quasi) i tipi di progetto tradizionali.

Perché mi piace tanto?

Prendiamo come esempio la persistenza di NServiceBus su RavenDB, questa è la diff tra il prima e il dopo: –187 righe. Devo aggiungere altro?

Un’altra cosa che mi piace molto è che potete eliminare il file “packages.config” perché i pacchetti Nuget diventano first class citizen tra le reference del progetto. Inoltre finalmente potete costruire un pacchetto Nuget direttamente in fase di build senza pressoché fare nulla. Finalmente tutti i file presenti in una directory sono inclusi per definizione in un progetto, portando praticamente a zero le merge e le rogne in fase di evoluzione massiccia di un progetto.

Ultima cosa che trovo fantastica è che potete esternalizzare in file “Directory.*.proj” parti di configurazione che sono comuni a più progetti che vivono nella stessa folder, o solution. Mi piace poco invece la sintassi usata per escludere contenuti, me ne farò una ragione, anche se è veramente triste.

Provatelo ne vale la pena, vale anche la pena investire tempo per convertire progetti esistenti perché non siete obbligati a passare a .NET Core, l’unico vincolo è Visual Studio 2017.