cake-build / cake

:cake: Cake (C# Make) is a cross platform build automation system.
https://cakebuild.net
MIT License
3.89k stars 724 forks source link

MsBuild Path for BuildTools is not recognized correctly #4231

Open christianbumann opened 11 months ago

christianbumann commented 11 months ago

Prerequisites

Cake runner

Cake .NET Tool

Cake version

3.1

Operating system

Windows

Operating system architecture

X64

CI Server

TeamCity / Azure DevOps Server (On Prem)

What are you seeing?

Running the Cake Alias "MsBuild" on a machine where only BuildTools are installed can fail

`MSBuild: Could not locate executable.
   at Cake.Core.Tooling.Tool`1.RunProcess(TSettings settings, ProcessArgumentBuilder arguments, ProcessSettings processSettings) in C:\projects\cake\src\Cake.Core\Tooling\Tool.cs:line 164
   at Cake.Core.Tooling.Tool`1.Run(TSettings settings, ProcessArgumentBuilder arguments, ProcessSettings processSettings, Action`1 postAction) in C:\projects\cake\src\Cake.Core\Tooling\Tool.cs:line 81
   at Cake.Core.Tooling.Tool`1.Run(TSettings settings, ProcessArgumentBuilder arguments) in C:\projects\cake\src\Cake.Core\Tooling\Tool.cs:line 60
   at Cake.Common.Tools.MSBuild.MSBuildRunner.Run(FilePath solution, MSBuildSettings settings) in C:\projects\cake\src\Cake.Common\Tools\MSBuild\MSBuildRunner.cs:line 48
   at Cake.Common.Tools.MSBuild.MSBuildAliases.MSBuild(ICakeContext context, FilePath solution, MSBuildSettings settings) in C:\projects\cake\src\Cake.Common\Tools\MSBuild\MSBuildAliases.cs:line 102
   at Submission#0.MSBuild(FilePath solution, MSBuildSettings settings)

In this PR https://github.com/cake-build/cake/pull/3795/files this was changed to "Program Files (x86)"

But it is also possible that the BuildTools are installed on "Program Files" Directory (image)

msbuild

This is now the new behavior https://learn.microsoft.com/en-us/visualstudio/msbuild/whats-new-msbuild-17-0?view=vs-2022

What is expected?

Detection of the correct directory

Steps to Reproduce

Windows Server 2022

image

Output log

No response