Skip to content

Commit b9f1a63

Browse files
committed
vs2026 support for msbuild toolpath resolver
questions in comments for now
1 parent 335b930 commit b9f1a63

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

source/Nuke.Common/Tools/MSBuild/MSBuildToolPathResolver.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,17 @@ private static IEnumerable<string> ResolveInternal(MSBuildVersion? msBuildVersio
3939

4040
var instances = new List<Instance>();
4141

42+
instances.AddRange(
43+
from version in new[] { MSBuildVersion.VS2026 }
44+
from platform in s_platforms
45+
from edition in typeof(VisualStudioEdition).GetEnumValues<VisualStudioEdition>()
46+
// is this relevant for 2026?
47+
// let folder = version == MSBuildVersion.VS2022 && edition != VisualStudioEdition.BuildTools
48+
// ? SpecialFolders.ProgramFiles
49+
// : SpecialFolders.ProgramFilesX86
50+
let folder = SpecialFolders.ProgramFiles
51+
select GetFromVs2026Instance(version, platform, edition, folder));
52+
4253
instances.AddRange(
4354
from version in new[] { MSBuildVersion.VS2022, MSBuildVersion.VS2019, MSBuildVersion.VS2017 }
4455
from platform in s_platforms
@@ -64,6 +75,26 @@ from platform in s_platforms
6475

6576
return filteredInstances.Select(x => x.ToolPath);
6677
}
78+
79+
private static Instance GetFromVs2026Instance(
80+
MSBuildVersion version,
81+
MSBuildPlatform platform,
82+
VisualStudioEdition edition,
83+
SpecialFolders specialFolder)
84+
{
85+
// introduce another mapping method?
86+
// var versionDirectoryName = version.ToString().TrimStart("VS");
87+
var basePath = Path.Combine(
88+
EnvironmentInfo.SpecialFolder(specialFolder).NotNull(),
89+
$@"Microsoft Visual Studio\18\{edition}\MSBuild\{GetVersionFolder(version)}\Bin");
90+
91+
return new Instance(
92+
version,
93+
platform,
94+
platform == MSBuildPlatform.x64
95+
? Path.Combine(basePath, "amd64")
96+
: basePath);
97+
}
6798

6899
private static Instance GetFromVs2017Instance(
69100
MSBuildVersion version,
@@ -105,6 +136,9 @@ private static string GetVersionFolder(MSBuildVersion version)
105136
MSBuildVersion.VS2013 => "12.0",
106137
MSBuildVersion.VS2015 => "14.0",
107138
MSBuildVersion.VS2017 => "15.0",
139+
// correct?
140+
MSBuildVersion.VS2019 => "16.0",
141+
MSBuildVersion.VS2022 => "17.0",
108142
_ => "Current"
109143
};
110144
}

source/Nuke.Common/Tools/MSBuild/MSBuildVersion.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace Nuke.Common.Tools.MSBuild;
1515
[PublicAPI]
1616
public enum MSBuildVersion
1717
{
18+
VS2026,
1819
VS2022,
1920
VS2019,
2021
VS2017,

0 commit comments

Comments
 (0)