Skip to content

Commit 3514e40

Browse files
committed
Merge branch 'atsushieno-fix-linux-msbuild-invocation' into develop
2 parents 5192d77 + 35d6258 commit 3514e40

File tree

4 files changed

+116
-82
lines changed

4 files changed

+116
-82
lines changed

src/Cake.Common.Tests/Fixtures/Tools/MSBuildRunnerFixture.cs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System.Collections.Generic;
66
using Cake.Common.Tools.MSBuild;
7+
using Cake.Core;
78
using Cake.Core.IO;
89
using Cake.Testing;
910
using Cake.Testing.Fixtures;
@@ -15,23 +16,27 @@ internal sealed class MSBuildRunnerFixture : ToolFixture<MSBuildSettings>
1516
public HashSet<FilePath> KnownMSBuildPaths { get; }
1617
public FilePath Solution { get; set; }
1718

18-
public MSBuildRunnerFixture(bool is64BitOperativeSystem)
19+
public MSBuildRunnerFixture(bool is64BitOperativeSystem, PlatformFamily platformFamily)
1920
: base("MSBuild.exe")
2021
{
2122
// Create the list of all known MSBuild paths.
22-
KnownMSBuildPaths = new HashSet<FilePath>(new PathComparer(false));
23-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework/v2.0.50727/MSBuild.exe");
24-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework64/v2.0.50727/MSBuild.exe");
25-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe");
26-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework64/v3.5/MSBuild.exe");
27-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe");
28-
KnownMSBuildPaths.Add("/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe");
29-
KnownMSBuildPaths.Add("/Program86/MSBuild/12.0/Bin/MSBuild.exe");
30-
KnownMSBuildPaths.Add("/Program86/MSBuild/12.0/Bin/amd64/MSBuild.exe");
31-
KnownMSBuildPaths.Add("/Program86/MSBuild/14.0/Bin/MSBuild.exe");
32-
KnownMSBuildPaths.Add("/Program86/MSBuild/14.0/Bin/amd64/MSBuild.exe");
33-
KnownMSBuildPaths.Add("/Program86/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/MSBuild.exe");
34-
KnownMSBuildPaths.Add("/Program86/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/amd64/MSBuild.exe");
23+
KnownMSBuildPaths = new HashSet<FilePath>(new PathComparer(false))
24+
{
25+
"/Windows/Microsoft.NET/Framework/v2.0.50727/MSBuild.exe",
26+
"/Windows/Microsoft.NET/Framework64/v2.0.50727/MSBuild.exe",
27+
"/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe",
28+
"/Windows/Microsoft.NET/Framework64/v3.5/MSBuild.exe",
29+
"/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe",
30+
"/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe",
31+
"/Program86/MSBuild/12.0/Bin/MSBuild.exe",
32+
"/Program86/MSBuild/12.0/Bin/amd64/MSBuild.exe",
33+
"/Program86/MSBuild/14.0/Bin/MSBuild.exe",
34+
"/Program86/MSBuild/14.0/Bin/amd64/MSBuild.exe",
35+
"/Program86/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/MSBuild.exe",
36+
"/Program86/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/amd64/MSBuild.exe",
37+
"/usr/bin/msbuild",
38+
"/Library/Frameworks/Mono.framework/Versions/Current/Commands/msbuild"
39+
};
3540

3641
// Install all known MSBuild versions.
3742
foreach (var msBuildPath in KnownMSBuildPaths)
@@ -43,6 +48,12 @@ public MSBuildRunnerFixture(bool is64BitOperativeSystem)
4348
Environment.SetSpecialPath(SpecialPath.ProgramFilesX86, "/Program86");
4449
Environment.SetSpecialPath(SpecialPath.Windows, "/Windows");
4550
Environment.ChangeOperativeSystemBitness(is64BitOperativeSystem);
51+
Environment.ChangeOperatingSystemFamily(platformFamily);
52+
if (platformFamily == PlatformFamily.Windows)
53+
{
54+
Environment.WorkingDirectory = new DirectoryPath("C:/Working");
55+
Environment.ApplicationRoot = Environment.WorkingDirectory.Combine("bin");
56+
}
4657

4758
// Prepare the tool parameters.
4859
Solution = new FilePath("./src/Solution.sln");

0 commit comments

Comments
 (0)