cake-build / cake

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

Cannot parse project with `ParseProject` #3932

Closed lonix1 closed 2 years ago

lonix1 commented 2 years ago

I originally thought it was "just me" so posted on SO without success. I assume lack of response means it's a bug? Below is a minimal repro. Thanks.

Prerequisites

Cake runner

Cake .NET Tool

Cake version

2.2.0 dotnet: 6.0.302

Operating system

Linux

Operating system architecture

64-Bit

CI Server

No response

What are you seeing?

ParseProject does not work:

Error: Failed to parse project properties

What is expected?

For it to work.

Steps to Reproduce

Create minimal repro project:

dotnet new classlib --no-restore --output /tmp/Foo
cd /tmp/Foo
dotnet new tool-manifest
dotnet tool install cake.tool
touch build.cake

Put this minimal script in build.cake:

Task("Default").Does(() => {
  var file = "./Foo.csproj";
  Information(FileExists(file).ToString());
  var props = ParseProject(file);
});
RunTarget("Default");

Run it:

dotnet cake

Result:

========================================
Default
========================================
True
An error occurred when executing task 'Default'.
Error: Failed to parse project properties

Output log

========================================
Default
========================================
Executing task: Default
An error occurred when executing task 'Default'.
Completed in 00:00:00.0136894
Error: Cake.Core.CakeException: Failed to parse project properties
   at Cake.Common.Solution.Project.ProjectParser.Parse(FilePath projectPath) in C:\projects\cake\src\Cake.Common\Solution\Project\ProjectParser.cs:line 124
   at Cake.Common.Solution.Project.ProjectAliases.ParseProject(ICakeContext context, FilePath projectPath) in C:\projects\cake\src\Cake.Common\Solution\Project\ProjectAliases.cs:line 66
   at Submission#0.ParseProject(FilePath projectPath)
   at Submission#0.<<Initialize>>b__0_0()
   at Cake.Core.CakeTaskBuilderExtensions.<>c__DisplayClass31_0.<Does>b__0(ICakeContext _) in C:\projects\cake\src\Cake.Core\CakeTaskBuilder.Execution.cs:line 26
   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 322
   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 345
   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 357
   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 258
   at Cake.Core.CakeEngine.RunTargetAsync(ICakeContext context, IExecutionStrategy strategy, ExecutionSettings settings) in C:\projects\cake\src\Cake.Core\CakeEngine.cs:line 221
   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)
   at Cake.Infrastructure.Scripting.RoslynScriptSession.Execute(Script script) in C:\projects\cake\src\Cake\Infrastructure\Scripting\RoslynScriptSession.cs:line 226
   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
gep13 commented 2 years ago

I have provided an answer to your Stack Overflow question.

Let us know if this answers your question, and if so, we can go ahead and close out this issue.

gep13 commented 2 years ago

Actually, there is an open issue about this already: https://github.com/cake-build/cake/issues/1662

As such, I am going to close out this issue.