Cake fails on shutdown with .NET 10 preview 1 on Windows
Prerequisites
- [x] I have written a descriptive issue title
- [x] I have searched issues to ensure it has not already been reported
Cake runner
Cake .NET Tool
Cake version
5.0.0
Operating system
Windows
Operating system architecture
x64
CI Server
GitHub Actions
What are you seeing?
On Windows (but not macOS or Linux), cake is throwing an exception during teardown when using .NET 10 preview 1 (SDK version 10.0.100-preview.1.25120.13).
What is expected?
The build exits cleanly and successfully.
Steps to Reproduce
- Install the latest versions of .NET 8 & 9, plus 10 preview 1
- Clone https://github.com/App-vNext/Polly/pull/2531/commits/f814d126bba18f4df46f575eaed0b0464727ecd8
- Run
build.ps1from the root of the repository on Windows
Output log
Executing custom teardown action...
Finished running tasks.
Error: Cake.Core.CakeException: .NET CLI: Process returned an error (exit code 1).
at Cake.Core.Tooling.Tool`1.ProcessExitCode(Int32 exitCode) in C:\projects\cake\src\Cake.Core\Tooling\Tool.cs:line 118
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 103
at Cake.Common.Tools.DotNet.DotNetTool`1.RunCommand(TSettings settings, ProcessArgumentBuilder arguments) in C:\projects\cake\src\Cake.Common\Tools\DotNet\DotNetTool.cs:line 64
at Cake.Common.Tools.DotNet.Test.DotNetTester.Test(String project, ProcessArgumentBuilder arguments, DotNetTestSettings settings) in C:\projects\cake\src\Cake.Common\Tools\DotNet\Test\DotNetTester.cs:line 49
at Cake.Common.Tools.DotNet.DotNetAliases.DotNetTest(ICakeContext context, String project, ProcessArgumentBuilder arguments, DotNetTestSettings settings) in C:\projects\cake\src\Cake.Common\Tools\DotNet\DotNetAliases.cs:line 513
at Cake.Common.Tools.DotNet.DotNetAliases.DotNetTest(ICakeContext context, String project, DotNetTestSettings settings) in C:\projects\cake\src\Cake.Common\Tools\DotNet\DotNetAliases.cs:line 450
at Submission#0.DotNetTest(String project, DotNetTestSettings settings)
at Submission#0.<<Initialize>>b__0_7()
at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass36_0.<Does>b__0(ICakeContext _) in C:\projects\cake\src\Cake.Core\CakeTaskBuilder.Execution.cs:line 26
at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass39_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 69
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 318
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 341
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 353
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 254
at Cake.Core.CakeEngine.RunTarget(ICakeContext context, IExecutionStrategy strategy, CakeTask[] orderedTasks, String target, Boolean exclusive, Stopwatch stopWatch, CakeReport report) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 229
at Cake.Core.CakeEngine.RunTargetAsync(ICakeContext context, IExecutionStrategy strategy, ExecutionSettings settings) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 199
at Cake.Cli.BuildScriptHost`1.internalRunTargetAsync() in C:\projects\cake\src\Cake.Cli\Hosts\BuildScriptHost.cs:line 87
at Cake.Cli.BuildScriptHost`1.RunTargetAsync(String target) in C:\projects\cake\src\Cake.Cli\Hosts\BuildScriptHost.cs:line 74
at Cake.Core.Scripting.ScriptHost.RunTarget(String target) in C:\projects\cake\src\Cake.Core\Scripting\ScriptHost.cs:line 110
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)
at Cake.Infrastructure.Scripting.RoslynScriptSession.Execute(Script script) in C:\projects\cake\src\Cake\Infrastructure\Scripting\RoslynScriptSession.cs:line 206
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(ICakeArguments arguments, BuildFeatureSettings settings) in C:\projects\cake\src\Cake\Features\Building\BuildFeature.cs:line 99
at Cake.Features.Building.BuildFeature.Run(ICakeArguments 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 77
Error: Process completed with exit code 1.
Are you running any powershell in test task see this error in linked log
2025-02-26T17:04:14: Error during rendering summary report (Report type: 'Html'): The process cannot access the file 'D:\a\Polly\Polly\artifacts\coverage-reports\Polly.Specs\index.html' because it is being used by another process.
Out-File: The process cannot access the file 'D:\a\_temp\_runner_file_commands\step_summary_3a828548-9d2b-466c-af7a-9b2a185dbc67' because it is being used by another process.
We use the ReportGenerator MSBuild task, maybe adding an another TFM has made a file-write clash more likely.
Looks like that's what it was on closer inspection, but that was after making changes because Cake was throwing an error on Linux in the first commit on that PR:
Preparing to run build script...
Running build script...
Analyzing build script...
Processing build script...
Installing addins...
Error: Failed to install addin 'Cake.FileHelpers'.
Error: Process completed with exit code 1.
Turning up the verbosity I got to this:
Preparing to run build script...
Running build script...
Looking for modules...
No modules found to install.
Module directory does not exist.
Analyzing build script...
Analyzing /home/runner/work/Polly/Polly/build.cake...
Processing build script...
Installing addins...
Assemblies not found for tfm .NETStandard,Version=v2.0 and rid linux-x64.
No assemblies found after running content resolver.
Error: Cake.Core.CakeException: Failed to install addin 'Cake.FileHelpers'.
at Cake.Core.Scripting.ScriptProcessor.InstallAddins(IReadOnlyCollection`1 addins, DirectoryPath installPath) in C:\projects\cake\src\Cake.Core\Scripting\ScriptProcessor.cs:line 109
at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath) in C:\projects\cake\src\Cake.Core\Scripting\ScriptRunner.cs:line 106
at Cake.Features.Building.BuildFeature.RunCore(ICakeArguments arguments, BuildFeatureSettings settings) in C:\projects\cake\src\Cake\Features\Building\BuildFeature.cs:line 99
at Cake.Features.Building.BuildFeature.Run(ICakeArguments 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 77
Error: Process completed with exit code 1.
And then I got to the initial error once I also installed the .NET 9 SDK as well as 8 and 10.
For the initial error looks like I need to try and make the MSBuild stuff more resilient to file conflicts, but feels like there's something weird going on here regardless. I wouldn't have expected Cake to error out until dotnet test tried to run the net9.0 tests later on in the script, rather than just terminate almost straight away.
Is this still an issue?