You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have searched issues to ensure it has not already been reported
Cake runner
Cake .NET Tool
Cake version
1.3.0
Operating system
Windows
Operating system architecture
64-Bit
CI Server
No response
What are you seeing?
On a 64-bit Windows system with both Visual Studio 2019 Community Edition and Visual Studio 2022 Build Tools installed to default locations, the MSBuild command is unable to find the Visual Studio 2022 version of msbuild.exe, even when .UseToolVersion(MSBuildToolVersion.VS2022) is used.
The MSBuild command should locate msbuild.exe from the Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin (or Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64?) directory on 64-bit Windows systems.
Steps to Reproduce
Install Visual Studio 2019 Community Edition (probably optional)
Install Visual Studio 2022 Build Tools
Run a Cake script that has a task with something like MSBuild("foo.targets", new MSBuildSettings().UseToolVersion(MSBuildToolVersion.VS2022);
The build fails with Cake.Core.CakeException: MSBuild: Could not locate executable. exception
Output log
========================================
build-foo
========================================
Executing task: build-foo
An error occurred when executing task 'build-foo'.
Error: System.AggregateException: One or more errors occurred. (MSBuild: Could not locate executable.)
---> Cake.Core.CakeException: 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)
at Submission#0.<<Initialize>>b__0_22(ContrastContext contrast)
at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass32_0`1.<Does>b__0(ICakeContext _, TData data) in C:\projects\cake\src\Cake.Core\CakeTaskBuilder.Execution.cs:line 43
at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass37_0`1.<Does>b__0(ICakeContext context) in C:\projects\cake\src\Cake.Core\CakeTaskBuilder.Execution.cs:line 141
at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass34_0.<Does>b__0(ICakeContext context) in C:\projects\cake\src\Cake.Core\CakeTaskBuilder.Execution.cs:line 81
at Cake.Core.CakeTask.Execute(ICakeContext context) in C:\projects\cake\src\Cake.Core\CakeTask.cs:line 119
at Cake.Core.DefaultExecutionStrategy.ExecuteAsync(CakeTask task, ICakeContext context) in C:\projects\cake\src\Cake.Core\DefaultExecutionStrategy.cs:line 72
at Cake.Core.CakeEngine.ExecuteTaskAsync(ICakeContext context, IExecutionStrategy strategy, Stopwatch stopWatch, CakeTask task, CakeReport report) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 278
at Cake.Core.CakeEngine.ExecuteTaskAsync(ICakeContext context, IExecutionStrategy strategy, Stopwatch stopWatch, CakeTask task, CakeReport report) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 301
at Cake.Core.CakeEngine.ExecuteTaskAsync(ICakeContext context, IExecutionStrategy strategy, Stopwatch stopWatch, CakeTask task, CakeReport report) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 311
at Cake.Core.CakeEngine.RunTask(ICakeContext context, IExecutionStrategy strategy, CakeTask task, String target, Stopwatch stopWatch, CakeReport report) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 226
at Cake.Core.CakeEngine.RunTargetAsync(ICakeContext context, IExecutionStrategy strategy, ExecutionSettings settings) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 189
at Cake.Cli.BuildScriptHost`1.RunTargetAsync(String target) in C:\projects\cake\src\Cake.Cli\Hosts\BuildScriptHost.cs:line 73
at Cake.Core.Scripting.ScriptHost.RunTarget(String target) in C:\projects\cake\src\Cake.Core\Scripting\ScriptHost.cs:line 105
at Submission#0.<<Initialize>>d__0.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.RunSubmissionsAsync[TResult](ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, StrongBox`1 exceptionHolderOpt, Func`2 catchExceptionOpt, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Scripting.Script`1.RunSubmissionsAsync(ScriptExecutionState executionState, ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, Func`2 catchExceptionOpt, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Cake.Infrastructure.Scripting.RoslynScriptSession.Execute(Script script) in C:\projects\cake\src\Cake\Infrastructure\Scripting\RoslynScriptSession.cs:line 90
at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath) in C:\projects\cake\src\Cake.Core\Scripting\ScriptRunner.cs:line 172
at Cake.Features.Building.BuildFeature.RunCore(IRemainingArguments arguments, BuildFeatureSettings settings) in C:\projects\cake\src\Cake\Features\Building\BuildFeature.cs:line 99
at Cake.Features.Building.BuildFeature.Run(IRemainingArguments arguments, BuildFeatureSettings settings) in C:\projects\cake\src\Cake\Features\Building\BuildFeature.cs:line 49
at Cake.Commands.DefaultCommand.Execute(CommandContext context, DefaultCommandSettings settings) in C:\projects\cake\src\Cake\Commands\DefaultCommand.cs:line 73
The text was updated successfully, but these errors were encountered:
Prerequisites
Cake runner
Cake .NET Tool
Cake version
1.3.0
Operating system
Windows
Operating system architecture
64-Bit
CI Server
No response
What are you seeing?
On a 64-bit Windows system with both Visual Studio 2019 Community Edition and Visual Studio 2022 Build Tools installed to default locations, the
MSBuild
command is unable to find the Visual Studio 2022 version ofmsbuild.exe
, even when.UseToolVersion(MSBuildToolVersion.VS2022)
is used.This appears to be due to the
BuildTools
installs always being installed to the 32-bitProgram Files
folder, andMSBuildResolver
always using the 64-bitProgram Files
folder on 64-bit platforms: https://github.com/cake-build/cake/blob/v1.3.0/src/Cake.Common/Tools/MSBuild/MSBuildResolver.cs#L219What is expected?
The
MSBuild
command should locatemsbuild.exe
from theProgram Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin
(orProgram Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64
?) directory on 64-bit Windows systems.Steps to Reproduce
MSBuild("foo.targets", new MSBuildSettings().UseToolVersion(MSBuildToolVersion.VS2022);
Cake.Core.CakeException: MSBuild: Could not locate executable.
exceptionOutput log
The text was updated successfully, but these errors were encountered: