If you're not already using Cake for all your cross-platform build needs, you're missing out! It's flexible, powerful and super-simple to get started with!
Out of the box, Cake runs on Linux using Mono, but there is also
Cake.CoreCLR which supports running anywhere .NET Core runs.
If you're using Cake on Linux, you may sometimes see an error that Cake
"Failed to install tool: 'YourToolNameHere'". In my case, I was getting this for the
DocFx.Console package, which I added to my script as below:
./build.sh and immediately it fails:
$ ./build.sh All packages listed in /home/achapman/Source/TEMP/caketest/tools/packages.config are already installed. Analyzing build script... Processing build script... Installing tools... Could not find any relevant files for tool 'DocFx.Console'. Perhaps you need an include parameter? Error: Failed to install tool 'DocFx.Console'.
The reason for this is deceptively simple, and won't show when running on Windows: case-sensitivity.
Some packages, including
docfx.console, are lower-case named, and on Linux (since the filesystem is case-sensitive), you need to match the casing in your
#tool directive. First, check what the package's name on disk is:
[agc93 ~/caketest]$ ls tools/ total 4.5M drwxrwxr-x. 2 achapman achapman 4.0K Jun 20 10:07 Cake drwxrwxr-x. 5 achapman achapman 4.0K Jun 20 10:07 docfx.console -rw-rw-r--. 1 achapman achapman 4.4M Jun 20 10:06 nuget.exe -rw-rw-r--. 1 achapman achapman 105 Jun 20 10:06 packages.config -rw-rw-r--. 1 achapman achapman 33 Jun 20 10:07 packages.config.md5sum
(note the all-lowercase folder name)
Next, update your
build.cake with the correct directive:
You can now run
build.sh again and your tool should be picked up and found correctly!