November, 2026

Cake v7.0.0 released

Published
Tuesday, 10 November 2026
Category
Release Notes
Author
devlead

Version 7.0.0 of Cake has been released. Take it for a spin and give us feedback on our discussion board.

This release includes new features, improvements and bug fixes to Cake Scripting, Cake Frosting and Cake Sdk since the Cake v6.3.0 release! 🚀 🍰

Cake now fully supports running on .NET 11, and with this C# 15, which means you can take advantage of the latest framework, runtime, and language improvements (#4998, #4999). When running on .NET 11, Cake is also built with the new .NET 11 runtime async enabled (#5177).

Cake itself will no longer run on .NET 8 or .NET 9 (#4997), but Cake will continue to support building projects targeting .NET 9, .NET 8, older versions of .NET and .NET Framework.

The supported platform matrix for Cake 7.0.0 will look like this:

Cake.Template now defaults to net11.0.

As with every major release, we've taken the opportunity to clean things up. Most builds should just work, but these are the changes worth knowing about:

With Cake.Tool migrated from Autofac to Microsoft.Extensions.DependencyInjection (#2835), all three runners now share the same DI container, and the ServiceProvider alias that Cake.Sdk users already know is now available on ICakeContext everywhere.

That means services registered by a module loaded with the #module directive can be resolved straight from your script:

The very same module works with Cake Frosting, where you also get constructor injection into your tasks:

Cake.Sdk now also runs on the same BuildScriptHost as Cake .NET Tool (generator#208), so settings and behavior are identical regardless of runner. On the topic of consistency, Cake Frosting no longer exits with -1 for any kind of error; it now returns the CakeException.ExitCode (1 by default), just like the other runners (#3830, generator#207).

In Cake 6.2.0 we introduced an opt-in unified dependency graph when running multiple targets, so dependencies shared between targets only execute once. In Cake 7.0.0 this is now the default (#5060).

Above, a shared Build dependency will now execute once, not once per target. If you rely on the previous behavior, you can opt out via argument

or via cake.config

#tool directives install tools up front, before your build runs. With the new InstallTool / InstallTools aliases (#2471) you can install tools from within a task, only when that task actually executes. This works with all runners.

The DSL also received a few quality of life improvements:

Cake 7.0.0 comes with a bunch of new aliases:

Also new are DotNetDownloadPackage (#5103), DotNetNuGetWhy (#5109) and DotNetNuGetLocalsList / DotNetNuGetLocalsClear (#5112), together with new .NET 11 settings for DotNetRun (#5115), Microsoft Testing Platform settings for DotNetTest (#5119) and Framework for DotNetFormat (#5117).

DotNetPublish now supports publishing container images (#5159, #5173), either through the new Container settings or the convenience extension methods:

And as Cake.Sdk builds are regular .NET apps, you can publish your Cake build itself as a container, ready to run in any CI or container environment:

When Cake runs on .NET 11, ProcessSettings can opt in to the new .NET 11 process APIs on a per process basis (#5085), i.e. KillOnParentExit, StartDetached, RestrictInheritedHandles, DiscardStandardOutput and DiscardStandardError, and there's a new StartProcessAndForget alias returning the process id.

Regardless of .NET version, you can now also pass standard input to a process (#5125), as a string or bytes:

Building on the NuGetLogin trusted publishing support from Cake 6.3.0, Cake 7.0.0 adds AzureLogin (#5070), which exchanges a GitHub Actions OIDC token for an Azure access token. No Azure CLI and no client secret needed:

If you're using Azure.Identity, AzurePrepareWorkloadIdentity writes a federated token file that WorkloadIdentityCredential / DefaultAzureCredential picks up:

Your workflow needs the id-token: write permission for the token request to succeed.

Cake.Template has a new cakeci template (generator#255), which scaffolds a minimal CI pipeline running your Cake file-based build:

Supported providers are github, azuredevops, bitbucket, gitlab, appveyor, woodpecker, rwx and bitrise.

We've now set the recommended version of Cake.Core for addins to target to 7.0.0 (#5001).

This won't break the build, but you might see warnings like the one below when addins or modules are loaded.

The recommended target framework monikers for addins are now:

This release also includes a lot of smaller improvements and fixes: interpolated strings now correctly bind to the FormattableString log overloads (#5155, generator#258), using declarations on the first line are no longer hoisted as using alias directives (#5157), GetSpecialPath maps correctly on Unix (#5095), legacy .NET Framework / CoreCLR host code has been removed and internals modernized with frozen collections, GeneratedRegex and System.Text.Json, and the API docs now include Cake DSL examples (#5024, #5026, #5028, #5030).

This release was made possible thanks to the Cake team and the contribution of these awesome members of the Cake community listed below:

Full details of everything that was included in this release can be seen below.

Read more...