@@ -43,9 +43,7 @@ private static IEnumerable<string> ResolveInternal(MSBuildVersion? msBuildVersio
4343 from version in new [ ] { MSBuildVersion . VS2026 , MSBuildVersion . VS2022 , MSBuildVersion . VS2019 , MSBuildVersion . VS2017 }
4444 from platform in s_platforms
4545 from edition in typeof ( VisualStudioEdition ) . GetEnumValues < VisualStudioEdition > ( )
46- let folder = version == MSBuildVersion . VS2022 && edition != VisualStudioEdition . BuildTools
47- ? SpecialFolders . ProgramFiles
48- : SpecialFolders . ProgramFilesX86
46+ let folder = GetProgramFilesFolder ( version , edition )
4947 select GetFromVs2017Instance ( version , platform , edition , folder ) ) ;
5048
5149 instances . AddRange (
@@ -98,6 +96,24 @@ private static Instance GetVs2013To2015Instance(MSBuildPlatform platform, MSBuil
9896 : basePath ) ;
9997 }
10098
99+ private static SpecialFolders GetProgramFilesFolder ( MSBuildVersion version , VisualStudioEdition edition )
100+ {
101+ if ( edition == VisualStudioEdition . BuildTools )
102+ {
103+ return SpecialFolders . ProgramFilesX86 ;
104+ }
105+
106+ return version switch
107+ {
108+ MSBuildVersion . VS2013 => SpecialFolders . ProgramFilesX86 ,
109+ MSBuildVersion . VS2015 => SpecialFolders . ProgramFilesX86 ,
110+ MSBuildVersion . VS2017 => SpecialFolders . ProgramFilesX86 ,
111+ MSBuildVersion . VS2019 => SpecialFolders . ProgramFilesX86 ,
112+ // Versions VS2022+ are 64-bit
113+ _ => SpecialFolders . ProgramFiles
114+ } ;
115+ }
116+
101117 private static string GetVersionFolder ( MSBuildVersion version )
102118 {
103119 return version switch
0 commit comments