13. Mai 2024
Lesedauer 4 Min.
Neue Zöpfe ankleben
Solution-Dateiformat
Statt durch eine proprietäre SLN-Datei wird ein Visual-Studio-Projekt künftig durch eine XML-Datei beschrieben.

Das .NET-Ökosystem ist seit .NET Core generalüberholt, und auch das Tooling rund um die .NET-Projekte hat sich recht stark geändert. An die Stelle von packages.config und NuGet trat (glücklicherweise) die PackageReference, die .csproj-Dateien sind endlich gut lesbar, und jetzt geht Microsoft die nächste Baustelle an: die Solution-Datei.
Die SLN-Datei
Die Solutiondatei mit der Namenserweiterung .sln beschreibt für Visual Studio respektive alle anderen IDEs, wie sich die Lösung – also das Gesamtprojekt – aus den Unterprojekten zusammensetzt. Dabei hat sich Microsoft historisch bedingt eines eigenen, proprietären Formats bedient (Bild 1).
Ein Beispiel für das proprietäre Format der SLN-Datei (Bild 1)
Autor
Bei näherem Hinsehen entpuppt sich eine einfache Solutiondatei als Text, der erst einmal viel Interpretationsspielraum zulässt. Es werden darin Visual-Studio-Versionen gespeichert sowie auch globale Dinge wie die Konfiguration von Any CPU, x86 oder ARM. Jedes Projekt ist mit einer ominösen GUID referenziert und somit Bestandteil der Solution. Auch wenn Änderungen an Solutiondateien eher sporadischer Natur sind, kommen sie vor. Will man dann noch – vielleicht aufgrund von Konflikten in der Quellcodeverwaltung – mergen, ist der Spaß vorprogrammiert. Zeit, hier endlich aufzuräumen.
Die Neuerung
Microsoft baut gerade ein neues Format mit der Dateiendung .slnx. Dieses Format wird in Zukunft eine aufgeräumtere Solutiondatei ermöglichen. Um dieses Feature auszuprobieren, benötigen Sie eine aktuelle Version von Visual Studio Preview, und zwar die Version 17.10 Preview 3.Nach der Installation der Version kann das Vorschaufeature SLNX aktiviert werden. Dies muss explizit in den Optionen von Visual Studio angeschaltet werden (Bild 2). Damit bringen Sie Visual Studio in die Lage, diese Dateien zu verarbeiten.
SLNX: Derzeit nur in der Vorschauversion verfügbar (Bild 2)
Autor
In den regulären Versionen von Visual Studio beziehungsweise in anderen IDEs wie Jetbrains Rider wird uns das Feature wahrscheinlich erst in ein paar Monaten begegnen.
Bestandssolution
Eine bestehende Solution kann zu einer SLNX-Fassung konvertiert werden. Dazu muss die Solution neu gespeichert werden. Selektieren Sie dafür in der Solution den Wurzelknoten.Anschließend taucht im Menüpunkt Datei | SlnSample.sln speichern unter … die neue Auswahlmöglichkeit Xml Solution File (*.slnx) in der Dropdown-Liste für den Dateityp auf (Bild 3).
Der neue Dateityp SLNX im Speichern-unter-Dialog (Bild 3)
Autor
Öffnen Sie die Solution nun erneut, befinden Sie sich bereits in der neuen Welt. Statt nun allerdings eine Vielzahl von neuen Features vorzufinden, hat sich durch die eingeschaltete Option rein funktional nichts geändert.Das einzige, was sich geändert hat, ist, wie die Projekte zu einer Solution zusammengefasst werden – eben über die neue SLNX-Datei.
Aufbau der SLNX-Datei
Aus der ursprünglichen SLN-Datei mit mehreren Zeilen und viel Blabla wurde eine extrem komprimierte Datei:
<Solution>
<Project Path="SlnSample\SlnSample.csproj" />
</Solution>
Tatsächlich hat sich Microsoft bei der slnx-Datei auf ein recht bekanntes Format besonnen: XML. Was mit .csproj-Dateien mittlerweile Standard ist, beglückt nun auch in der Solutiondatei. Somit haben wir hier den gleichen Komfort wie bei den .csproj-Dateien.Probeweise fügen wir gleich ein paar neue Projekte der Solution hinzu. Unter anderem ist auch ein .NET-Framework-Projekt dabei. Das klappt auf Anhieb. Somit steht auch älteren Projekten beziehungsweise anderen Projekttypen dieses neue Format offen.
<Solution>
<Project Path="ConsoleApp1\ConsoleApp1.csproj"
Type="Classic C#" />
<Project Path="SlnSample\SlnSample.csproj" />
<Project
Path="WindowsFormsApp1\WindowsFormsApp1.csproj"
Type="Classic C#" />
</Solution>
Spannend ist hier das Type-Attribut. Bei der initialen Konvertierung fehlte dieses Attribut. Das hat auch keine Probleme bereitet. Die neu hinzugefügten Projekte erhielten hingegen das Attribut mit dem Wert Classic C#. Hier dürfte die IDE noch weitere Informationen aus dem Attribut ziehen.Welche weiteren Typen noch möglich sind, ist zum Zeitpunkt der Entstehung des Artikels noch nirgends beschrieben.