44
55using System . Collections . Generic ;
66using Cake . Common . Tools . MSBuild ;
7+ using Cake . Core ;
78using Cake . Core . IO ;
89using Cake . Testing ;
910using 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