Depuis un an, Microsoft met à disposition un nouveau format de fichiers solutions .Net (en preview jusqu'à présent) : le SLNX. Il doit remplacer le SLN, format historique et propriétaire. Le SLN ne correspond à aucun formatage ou dialecte standard et l'autre inconvénient : c'est un format verbeux. Le SLN était donc peu maniable avec beaucoup de lignes et de configurations. Pour remédiier à ces défauts, Microsoft introduit le format SLNX basé sur XML. Avantage du XML : c'est standard, le formatage est connu.
Pour rappel, un fichier solution .SLN est essentiel pour organiser et gérer les projets dans Visual Studio. Il agit comme un conteneur qui conserve les références entre les projets, les configurations de build et d'autres paramètres, définissant la structure de la solution et les projets concernés.
Exemple :
Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpConsoleApp", "CSharpConsoleApp\CSharpConsoleApp.csproj", "{56AC6E9D-28FA-60C6-322C-7A6C3A2CF147}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionFolder1", "SolutionFolder1", "{C6BC3CF2-0D31-8D54-D372-94C86BEC98BA}"
ProjectSection(SolutionItems) = preProject
global.json = global.json
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{56AC6E9D-28FA-60C6-322C-7A6C3A2CF147}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{56AC6E9D-28FA-60C6-322C-7A6C3A2CF147}.Debug|Any CPU.Build.0 = Debug|Any CPU
{56AC6E9D-28FA-60C6-322C-7A6C3A2CF147}.Release|Any CPU.ActiveCfg = Release|Any CPU
{56AC6E9D-28FA-60C6-322C-7A6C3A2CF147}.Release|Any CPU.Build.0 = Release|Any CPU
Les équipes avaient plusieurs défis à relever :
- Les modifications manuelles sont fastidieuses : la modification manuelle des fichiers de solution est sujette aux erreurs en raison de leur format axé sur les outils. De petites erreurs entraînent souvent des erreurs de configuration, perturbant ainsi votre flux de travail.
- Les conflits de fusion sont un problème constant : En équipe, les conflits de fusion dans les fichiers de solution peuvent entraîner des pertes de travail, des fichiers corrompus et des retards, ce qui nuit à la concentration sur le développement logiciel.
- Verbosité et redondance : Les fichiers de solution commencent par plus de 200 caractères et, à mesure que vous ajoutez des projets, ils se surchargent rapidement de GUID et de métadonnées en double, ce qui encombre votre travail.
- Aucun avantage réel de la duplication : Les références redondantes aux noms de projets et aux éléments de solution n'apportent que peu de valeur ajoutée et ne font qu'ajouter à la confusion, occupant de l'espace sans améliorer votre flux de travail.
- Format de fichier non standard : Le format de fichier .SLN est spécifique à Visual Studio et n'est pas une norme largement reconnue, ce qui limite sa compatibilité avec les outils externes et l'automatisation.
Microsoft annonce beaucoup de bonnes choses avec ce nouveau format :
- plus facile à lire et à comprendre
- standard XML pour une formatage standard et un langage de description standard
- minimisé le poids du fichier
- réduire les conflits de merge
- garder la compatibilité avec les anciennes versions de Visual Studio
- alignemenet avec SMBuild
SLNX supporte MSBuild, .Net CLI et C# Dev Kit (donc il est disponible sur Visual Studio Code).
Attention : Microsoft déconseille d'avoir dans le même référentiel projet des fichiers SLN et SLNX. Vous pouvez convertir des SLN en SLNX.
JetBrains a annoncé le support de SLNX dès octobre 2024.