Skip to content

Commit

Permalink
Add MSBuild resolution for Visual Studio 2019
Browse files Browse the repository at this point in the history
  • Loading branch information
matkoch committed May 1, 2019
1 parent 71c5155 commit 9c32b42
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
17 changes: 11 additions & 6 deletions source/Nuke.Common/Tools/MSBuild/MSBuildToolPathResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
using Nuke.Common.Utilities;

namespace Nuke.Common.Tools.MSBuild
{
Expand Down Expand Up @@ -38,9 +39,10 @@ private static IEnumerable<string> ResolveInternal(MSBuildVersion? msBuildVersio
var instances = new List<Instance>();

instances.AddRange(
from vs2017Edition in new[] { "Enterprise", "Professional", "Community", "BuildTools" }
from platform1 in s_platforms
select GetVs2017Instance(platform1, vs2017Edition));
from version in new[]{MSBuildVersion.VS2019, MSBuildVersion.VS2017}
from platform in s_platforms
from edition in new[] { "Enterprise", "Professional", "Community", "BuildTools" }
select GetFromVs2017Instance(version, platform, edition));

instances.AddRange(
from version in new[] { MSBuildVersion.VS2015, MSBuildVersion.VS2013 }
Expand All @@ -59,14 +61,15 @@ from platform in s_platforms
return filteredInstances.Select(x => x.ToolPath);
}

private static Instance GetVs2017Instance(MSBuildPlatform platform, string vs2017Edition)
private static Instance GetFromVs2017Instance(MSBuildVersion version, MSBuildPlatform platform, string edition)
{
var versionDirectoryName = version.ToString().TrimStart("VS");
var basePath = Path.Combine(
EnvironmentInfo.SpecialFolder(SpecialFolders.ProgramFilesX86).NotNull("path1 != null"),
$@"Microsoft Visual Studio\2017\{vs2017Edition}\MSBuild\{GetVersionFolder(MSBuildVersion.VS2017)}\Bin");
$@"Microsoft Visual Studio\{versionDirectoryName}\{edition}\MSBuild\{GetVersionFolder(version)}\Bin");

return new Instance(
MSBuildVersion.VS2017,
version,
platform,
platform == MSBuildPlatform.x64
? Path.Combine(basePath, "amd64")
Expand All @@ -91,6 +94,8 @@ private static string GetVersionFolder(MSBuildVersion version)
{
switch (version)
{
case MSBuildVersion.VS2019:
return "Current";
case MSBuildVersion.VS2017:
return "15.0";
case MSBuildVersion.VS2015:
Expand Down
1 change: 1 addition & 0 deletions source/Nuke.Common/Tools/MSBuild/MSBuildVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ namespace Nuke.Common.Tools.MSBuild
[PublicAPI]
public enum MSBuildVersion
{
VS2019,
VS2017,
VS2015,
VS2013
Expand Down

0 comments on commit 9c32b42

Please sign in to comment.