overview.md

March 16, 2026 ยท View on GitHub

Xake overview

Xake is a build automation tool for .NET that uses F# scripts. It tracks dependencies, supports incremental builds, and runs independent targets in parallel.

Current project baseline:

  • .NET SDK 9.0 or newer
  • Xake NuGet package 3.0.0

Minimal script

#r "nuget: Xake, 3.0.0"

open Xake
open Xake.Tasks

do xakeScript {
    rules [
        "main" <== ["hello"]

        command "hello" {
            do! trace Message "Hello from Xake"
        }
    ]
}

Run a build script

Run default target:

dotnet fsi build.fsx

Run specific targets and options after a double separator:

dotnet fsi build.fsx -- -- clean build test

Pass variables:

dotnet fsi build.fsx -- -- build -d Version=1.2.3

Core concepts

  • Rules map targets to recipes
  • Recipes define how targets are built
  • Filesets collect files with Ant style masks
  • Dependencies are recorded during recipe execution

When dependencies do not change, Xake skips rebuilds.

Rule styles

Preferred builder style:

rules [
    command "build" {
        do! sh "dotnet build src/core -c Release" {}
    }

    target "out/version.txt" {
        let! ver = getVar "VERSION"
        do! writeText <| Option.defaultValue "0.0.0" ver
    }

    "main" <== ["build"]
]

Operator style also works:

rules [
    "main" <== ["build"; "test"]
    "deploy" <<< ["build"; "test"; "package"]
    "clean" => rm {dir "out"}
]