Pourquoi le fichier project.json avait été adopté à la place du .csproj
.NET Core a été conçu pour fonctionner sur Windows, Linux et Mac. La volonté de Microsoft est de permettre aux développeurs de créer des applications .NET en utilisant leur système d’exploitation préféré et l’EDI de leur choix.
Le format .csproj n’était pas adapté pour atteindre ces objectifs. Ce dernier est extrêmement lié à MsBuild, qui n’était pas open source et cross-platform. C’est un fichier difficile à interpréter à l’œil, verbeux et laborieux à éditer. De plus, il est une source de conflits pour les équipes qui utilisent un gestionnaire de versions, car ce dernier est édité à chaque ajout d’un fichier au projet.
Le fichier project.json a apporté une solution à ces problèmes :
- plus de spécifications des fichiers dans le fichier de projet ;
- un fichier facilement compréhensible et modifiable sans avoir recours à un IDE ;
- la compilation cross-platform ;
- et bien plus.
Toutefois, l’adoption du project.json a introduit de nombreux défis pour les développeurs de Microsoft.
Pourquoi le retour du format .csproj
Le fichier project.json bien qu’étant très adapté pour les projets Web (le format json étant devenu quasiment incontournable dans le développement Web), présente cependant des limites pour son extension à d’autres projets .NET.
En effet, Microsoft ambitionne de généraliser le développement cross-platform à d’autres projets .NET, en faisant de .NET Core le socle pour :
- le développement d’applications ASP.NET (ce qui est déjà le cas) ;
- le développement d’applications console ;
- le développement des bibliothèques ;
- le développement d’applications Windows universelles ;
- et même le développement d’applications Android et iOS avec Xamarin.
De ce fait, le project.json devait être étendu à l’ensemble de ces projets. Ce qui allait entrainer de gros efforts, qui allaient toucher l’ensemble des projets dans Visual Studio, Xamarin et même les partenaires de Microsoft.
Pour éviter cela, la firme a décidé de retourner au fameux .csproj. Toutefois, la firme a tiré parti des avantages apportés par le fichier project.json. Elle promet donc que le nouveau .csproj sera assez similaire au project.json, ne listera pas les fichiers sources et sera facilement modifiable dans Visual Studio qui offrira notamment l’IntelliSense.
Le retour du format .csproj, quelle conséquence pour le cross-platform
Dans son billet de blog, Microsoft promet que le fichier .csproj sera facilement éditable, surtout avec Visual Studio. Qu’en est-il des autres éditeurs : Visual Studio Code, Vim, Atom, Sublime, etc ? L’adoption d’un format ouvert et populaire comme json rendait par défaut le fichier project.json compatible avec tous ces outils et facile à lire pour les développeurs. Alors que le .csproj est propre à Microsoft.
Et vous ?
Que pensez-vous du retour du format .csproj ?
Êtes-vous d’accord avec l'orientation de Microsoft ?
Le .csproj est-il adapté pour le cross-plaform et les autres EDI ?