It's no secret, I like Cake. When I have to write a script to build my source code, I use to Cake. On my most recent expedition writing a Cake script to publish a UWP application, I noticed Hockey App publish failed, Cake.HockeyApp was throwing an exception.
When I realized it wasn't the way my script interacted with Cake, but an issue with the addin itself, I immediately hit the Cake Gitter channel. I was in search of some documentation that allowed me to debug a Cake addin so I could address the issue that I was having Friday afternoon at half past quitting time.
One of the members of the project team suggested the following:
build your addin in debug, reference it from Cake script and attach to process from VS. Start Cake.exe with
--debug
flag so you have time to attach to process
Now that I know where to start I created myself a task list:
For the purposes of this post, I will cover steps 1 and 3. Step 2 is no more than building the addin source code in Visual Studio.
This is the easiest part. I modified the Invoke-Expression
line of the bootstrapper to resemble the following.
NOTE: We should revert this before we commit.
Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs --debug"
And on the next execution of .\build.ps1
Preparing to run build script...
Running build script...
Attach debugger to process 80276 to continue
In the build.cake file I add the following preprocessor directive
#r "./Cake.HockeyApp/src/Cake.HockeyApp/bin/Debug/net45/Cake.HockeyApp.dll"
I navigate back to Visual Studio Debug → Attach to Process (or Ctrl + Alt + P), pick the Cake execution with the corresponding process id and I hit break points!!!
Now I can debug the issue I am seeing, determine if it is user error or the addin, and resolve it either way!
comments powered by Disqus