Skip to content

Commit b5cb778

Browse files
committed
Fix failure to handle slnx files
Fixes #47038
1 parent 4e9565d commit b5cb778

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

src/BuiltInTools/dotnet-format/Workspaces/MSBuildWorkspaceFinder.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ public static (bool isSolution, string workspacePath) FindWorkspace(string searc
5555
private static (bool isSolution, string workspacePath) FindFile(string workspacePath)
5656
{
5757
var workspaceExtension = Path.GetExtension(workspacePath);
58-
var isSolution = workspaceExtension.Equals(".sln", StringComparison.OrdinalIgnoreCase) || workspaceExtension.Equals(".slnf", StringComparison.OrdinalIgnoreCase);
58+
var isSolution = workspaceExtension.Equals(".sln", StringComparison.OrdinalIgnoreCase)
59+
|| workspaceExtension.Equals(".slnf", StringComparison.OrdinalIgnoreCase)
60+
|| workspaceExtension.Equals(".slnx", StringComparison.OrdinalIgnoreCase);
5961
var isProject = !isSolution
6062
&& workspaceExtension.EndsWith("proj", StringComparison.OrdinalIgnoreCase)
6163
&& !workspaceExtension.Equals(DnxProjectExtension, StringComparison.OrdinalIgnoreCase);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<Solution />
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<Solution />

test/dotnet-format.Tests/tests/MSBuild/MSBuildWorkspaceFinderTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,30 @@ public void FindsSolutionByFilePath()
7777
Assert.True(isSolution);
7878
}
7979

80+
[Fact]
81+
public void FindsSlnxByFolder()
82+
{
83+
const string Path = "for_workspace_finder/single_slnx/";
84+
85+
var (isSolution, workspacePath) = MSBuildWorkspaceFinder.FindWorkspace(ProjectsPath, Path);
86+
87+
var solutionFileName = System.IO.Path.GetFileName(workspacePath);
88+
Assert.Equal("single_slnx.slnx", solutionFileName);
89+
Assert.True(isSolution);
90+
}
91+
92+
[Fact]
93+
public void FindsSlnxByFilePath()
94+
{
95+
const string Path = "for_workspace_finder/multiple_solutions/solution_c.slnx";
96+
97+
var (isSolution, workspacePath) = MSBuildWorkspaceFinder.FindWorkspace(ProjectsPath, Path);
98+
99+
var solutionFileName = System.IO.Path.GetFileName(workspacePath);
100+
Assert.Equal("solution_c.slnx", solutionFileName);
101+
Assert.True(isSolution);
102+
}
103+
80104
[Fact]
81105
public void FindsProjectByFolder()
82106
{

0 commit comments

Comments
 (0)