-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSdk.Common.SolutionDiscovery.props
More file actions
37 lines (32 loc) · 4.28 KB
/
Copy pathSdk.Common.SolutionDiscovery.props
File metadata and controls
37 lines (32 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<Project>
<!--
Solution directory discovery logic
Searches up to 5 directory levels for a solution file
-->
<PropertyGroup>
<!-- Match both classic .sln and XML .slnx solutions. GetFiles(...).Length is 0 when none
exist, so a level matches when either pattern's count is non-zero. -->
<!-- Level 1: Current directory -->
<_SolutionFileExists_Level1 Condition="'$(SolutionDir)' == ''">$([System.IO.Directory]::GetFiles('$(MSBuildProjectDirectory)', '*.sln').Length)</_SolutionFileExists_Level1>
<_SolutionFileExistsSlnx_Level1 Condition="'$(SolutionDir)' == ''">$([System.IO.Directory]::GetFiles('$(MSBuildProjectDirectory)', '*.slnx').Length)</_SolutionFileExistsSlnx_Level1>
<SolutionDir Condition="'$(SolutionDir)' == '' And ('$(_SolutionFileExists_Level1)' != '0' Or '$(_SolutionFileExistsSlnx_Level1)' != '0')">$(MSBuildProjectDirectory)</SolutionDir>
<!-- Level 2: Parent directory -->
<_SolutionFileExists_Level2 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..'))','*.sln').Length)</_SolutionFileExists_Level2>
<_SolutionFileExistsSlnx_Level2 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..'))','*.slnx').Length)</_SolutionFileExistsSlnx_Level2>
<SolutionDir Condition="'$(SolutionDir)' == '' And ('$(_SolutionFileExists_Level2)' != '0' Or '$(_SolutionFileExistsSlnx_Level2)' != '0')">$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..'))</SolutionDir>
<!-- Level 3: Grandparent directory -->
<_SolutionFileExists_Level3 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..'))','*.sln').Length)</_SolutionFileExists_Level3>
<_SolutionFileExistsSlnx_Level3 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..'))','*.slnx').Length)</_SolutionFileExistsSlnx_Level3>
<SolutionDir Condition="'$(SolutionDir)' == '' And ('$(_SolutionFileExists_Level3)' != '0' Or '$(_SolutionFileExistsSlnx_Level3)' != '0')">$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..'))</SolutionDir>
<!-- Level 4: Great-grandparent directory -->
<_SolutionFileExists_Level4 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..'))','*.sln').Length)</_SolutionFileExists_Level4>
<_SolutionFileExistsSlnx_Level4 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..'))','*.slnx').Length)</_SolutionFileExistsSlnx_Level4>
<SolutionDir Condition="'$(SolutionDir)' == '' And ('$(_SolutionFileExists_Level4)' != '0' Or '$(_SolutionFileExistsSlnx_Level4)' != '0')">$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..'))</SolutionDir>
<!-- Level 5: Great-great-grandparent directory -->
<_SolutionFileExists_Level5 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\..\'))','*.sln').Length)</_SolutionFileExists_Level5>
<_SolutionFileExistsSlnx_Level5 Condition="'$(SolutionDir)' == '' And Exists('$(MSBuildProjectDirectory)\..\..\..\..')">$([System.IO.Directory]::GetFiles('$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\..\'))','*.slnx').Length)</_SolutionFileExistsSlnx_Level5>
<SolutionDir Condition="'$(SolutionDir)' == '' And ('$(_SolutionFileExists_Level5)' != '0' Or '$(_SolutionFileExistsSlnx_Level5)' != '0')">$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\..'))</SolutionDir>
<!-- Fallback to MSBuildProjectDirectory if no solution found -->
<SolutionDir Condition="'$(SolutionDir)' == ''">$(MSBuildProjectDirectory)</SolutionDir>
</PropertyGroup>
</Project>