Skip to content

【F# Solution Explorer】 slnx sorts projects alphabetically vs sln keeps added order #2109

@callmekohei

Description

@callmekohei

Describe the bug

related: #2107 - Solution explorer doesn't respect the folder structure in slnx files

A .sln displays projects in the order they were added, but a .slnx does not.

// slnx in F# solution Explorer
bar
baz
foo
// sln in F# solution Explorer
foo
bar
baz

Steps to reproduce

slnx

dotnet new sln
dotnet sln add .\Foo\foo.fsproj
dotnet sln add .\Bar\Bar.fsproj
dotnet sln add .\Baz\Baz.fsproj

sln

dotnet new sln --format sln
dotnet sln add .\Foo\foo.fsproj
dotnet sln add .\Bar\Bar.fsproj
dotnet sln add .\Baz\Baz.fsproj

Link to sample reproduction

None

Expected behaviour

foo
bar
baz

Screenshots

sln

Image

slnx

Image

Machine infos

  • OS: Microsoft Windows [Version 10.0.26200.6899]
  • .NET SDK version: 10.0.100-rc.2.25502.107
  • Ionide version: 7.28.0

Additional context

Hoge.slnx

<Solution>
  <Project Path="Bar/Bar.fsproj" />
  <Project Path="Baz/Baz.fsproj" />
  <Project Path="Foo/Foo.fsproj" />
</Solution>

Hoge.sln

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Foo", "Foo\Foo.fsproj", "{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Bar", "Bar\Bar.fsproj", "{A1483BD7-9DBF-4168-89A1-DD991616B7B7}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Baz", "Baz\Baz.fsproj", "{FF966535-FC5B-4266-A107-6DDDDA80C9DE}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|x64.ActiveCfg = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|x64.Build.0 = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|x86.ActiveCfg = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Debug|x86.Build.0 = Debug|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|Any CPU.Build.0 = Release|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|x64.ActiveCfg = Release|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|x64.Build.0 = Release|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|x86.ActiveCfg = Release|Any CPU
		{8ACA41FA-DEC1-4DF5-89ED-A701D958F9EE}.Release|x86.Build.0 = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|x64.ActiveCfg = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|x64.Build.0 = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|x86.ActiveCfg = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Debug|x86.Build.0 = Debug|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|Any CPU.Build.0 = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|x64.ActiveCfg = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|x64.Build.0 = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|x86.ActiveCfg = Release|Any CPU
		{A1483BD7-9DBF-4168-89A1-DD991616B7B7}.Release|x86.Build.0 = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|x64.ActiveCfg = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|x64.Build.0 = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|x86.ActiveCfg = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Debug|x86.Build.0 = Debug|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|Any CPU.Build.0 = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|x64.ActiveCfg = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|x64.Build.0 = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|x86.ActiveCfg = Release|Any CPU
		{FF966535-FC5B-4266-A107-6DDDDA80C9DE}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions