Skip to main content

.NET 9 - Goodbye sln!

Although the csproj file evolved and simplified a lot over time, the Visual Studio solution file (.sln) remained an ugly file format full of magic GUIDs. With the latest .NET 9 SDK(9.0.200), we finally got an alternative; a new XML-based solution file(.slnx) got introduced in preview.

So say goodbye to this ugly sln file:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35825.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestProject1", "..\TestProject1\TestProject1.csproj", "{0CA151AB-72D3-47B3-902B-2008A79D3923}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AICalculator", "AICalculator\AICalculator.csproj", "{86549BF8-C76C-C1FA-8562-3CCB90DB7837}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Test|Any CPU = Test|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Release|Any CPU.Build.0 = Release|Any CPU
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Test|Any CPU.ActiveCfg = Test|Any CPU
{0CA151AB-72D3-47B3-902B-2008A79D3923}.Test|Any CPU.Build.0 = Test|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Release|Any CPU.ActiveCfg = Release|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Release|Any CPU.Build.0 = Release|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Test|Any CPU.ActiveCfg = Test|Any CPU
{86549BF8-C76C-C1FA-8562-3CCB90DB7837}.Test|Any CPU.Build.0 = Test|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C733AAA2-34BC-4EBA-8FC6-7E404EB05D41}
EndGlobalSection
EndGlobal
view raw Example.sln hosted with ❤ by GitHub

And meet his better looking slnx brother instead:

<Solution>
<Configurations>
<BuildType Name="Debug" />
<BuildType Name="Release" />
<BuildType Name="Test" />
</Configurations>
<Project Path="../TestProject1/TestProject1.csproj" />
<Project Path="AICalculator/AICalculator.csproj" />
</Solution>
view raw Example.slnx hosted with ❤ by GitHub

To use this feature we first have to enable it:

  • Go to Tools -> Options -> Environment -> Preview Features
  • Check the checkbox next to Use Solution File Persistence Model

Now we can migrate an existing sln file to slnx using the following command:

dotnet sln migrate AICalculator.sln
.slnx file D:\Projects\Test\AICalculator\AICalculator.slnx generated.

Or create a new Visual Studio solution using the slnx format:

dotnet new sln --format slnx
The template "Solution File" was created successfully.

The new format is not yet recognized by VSCode but it does work in Jetbrains Rider:

 

Nice!

Popular posts from this blog

Kubernetes–Limit your environmental impact

Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t...

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.