Incrementalist 1.0.0-beta3
See the version list below for details.
dotnet add package Incrementalist --version 1.0.0-beta3
NuGet\Install-Package Incrementalist -Version 1.0.0-beta3
<PackageReference Include="Incrementalist" Version="1.0.0-beta3" />
<PackageVersion Include="Incrementalist" Version="1.0.0-beta3" />
<PackageReference Include="Incrementalist" />
paket add Incrementalist --version 1.0.0-beta3
#r "nuget: Incrementalist, 1.0.0-beta3"
#:package Incrementalist@1.0.0-beta3
#addin nuget:?package=Incrementalist&version=1.0.0-beta3&prerelease
#tool nuget:?package=Incrementalist&version=1.0.0-beta3&prerelease
🔄 Incrementalist
<img src="https://raw.githubusercontent.com/petabridge/Incrementalist/refs/heads/dev/docs/incrementalist-logo-dark.svg" width="90" alt="Incrementalist Logo" />
Incrementalist is a .NET tool that leverages libgit2sharp and Roslyn to compute incremental build steps for large .NET solutions. It helps optimize your CI/CD pipeline by building and testing only the projects affected by your changes.
🎯 When to Use Incrementalist
Incrementalist is particularly valuable for:
- 🏗️ Large Solutions: If your solution contains dozens or hundreds of projects, Incrementalist can significantly reduce build times by only building what's necessary.
- 📦 Monorepos: When managing multiple applications or services in a single repository, Incrementalist helps identify and build only the affected components.
- 🌐 Microservice Architectures: In repositories containing multiple microservices, build only the services impacted by your changes.
- 🔗 Complex Dependencies: When projects have intricate dependencies, Incrementalist automatically determines the complete build graph.
- ⚡ CI/CD Optimization: Reduce CI/CD pipeline execution time by skipping unnecessary builds and tests.
⚙️ Requirements
- .NET 8.0 SDK or later
- Git installed and available in the system PATH
📥 Installation
Incrementalist is available in two forms:
- Incrementalist Library - a .NET 8 library for programmatic use
- Incrementalist.Cmd - a
dotnet toolfor command-line use (recommended)
Install the command-line tool globally:
dotnet tool install --global Incrementalist.Cmd
Or install locally in your project:
# From your repository root
dotnet new tool-manifest # if you haven't already created a .config/dotnet-tools.json
dotnet tool install Incrementalist.Cmd
Running as a Global Tool
When installed globally, run commands directly using the incrementalist command:
# Get list of affected projects
incrementalist -b dev -f ./affected-projects.txt
# Run tests for affected projects
incrementalist -b dev -r -- test -c Release --no-build --nologo
Running as a Local Tool
When using Incrementalist as a local tool, you need to use dotnet tool run with an additional -- before the Incrementalist commands:
# Get list of affected projects
dotnet tool run incrementalist -- -b dev -f ./affected-projects.txt
# Build affected projects
dotnet tool run incrementalist -- -b dev -r -- build -c Release --nologo
# Run tests with coverage
dotnet tool run incrementalist -- -b dev -r -- test -c Release --no-build --logger:trx --collect:"XPlat Code Coverage" --results-directory ./testresults
# Run in parallel mode
dotnet tool run incrementalist -- -b dev -r --parallel -- build -c Release --nologo
# Save affected projects AND run commands
dotnet tool run incrementalist -- -b dev -f ./affected-projects.txt -r -- build -c Release --nologo
Note the command structure when using as a local tool:
- First
--afterdotnet tool run incrementalistis for Incrementalist options - Second
--(if using-r) is for the dotnet command to run on affected projects
🚀 Quick Start Examples
# Get list of affected projects and save to file
incrementalist -b dev -f ./affected-projects.txt
# Specify solution explicitly
incrementalist -s ./src/MySolution.sln -b dev -f ./affected-projects.txt
# Get list of affected folders
incrementalist -b dev -l -f ./affected-folders.txt
# Build only affected projects
incrementalist -b dev -r -- build -c Release --nologo
# Run tests for affected projects
incrementalist -b dev -r -- test -c Release --no-build --nologo
# Run tests with code coverage
incrementalist -b dev -r -- test -c Release --no-build --nologo /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=./coverage/
# Save affected projects AND run commands
incrementalist -b dev -f ./affected-projects.txt -r -- build -c Release --nologo
📄 Output Files
Incrementalist can generate two types of output files using -f, --file:
Project Lists (default):
D:\src\Project1\Project1.csproj,D:\src\Project2\Project2.csprojFolder Lists (with
-l, --folders-only):D:\src\Project1,D:\src\Project2\SubFolder
These files can be used in build scripts, CI/CD pipelines, or other automation tools.
🛠️ Command-Line Options
-s, --sln Optional. Solution file to analyze. Uses first .sln in
current directory if not specified.
-f, --file Optional. Write output to the specified file.
-l, --folders-only Optional. List affected folders instead of projects.
-b, --branch Required. (Default: dev) Git branch to compare against
(e.g., 'dev' or 'master').
-d, --dir Optional. Working directory. Defaults to current directory.
--verbose Optional. (Default: false) Enable debug logging.
-t, --timeout Optional. (Default: 2) Solution load timeout in minutes.
-r, --run Optional. Run dotnet CLI command against affected projects.
All arguments after -- are passed to dotnet.
--continue-on-error Optional. (Default: true) Continue executing commands even
if some fail.
--parallel Optional. (Default: false) Execute commands in parallel.
--fail-on-no-projects Optional. (Default: false) Fail if no projects are affected.
--no-cache Optional. (Default: false) Ignore any existing cache file
and perform a full Roslyn analysis.
--help Display help screen.
--version Display version information.
⚡ Running Commands
Execute dotnet CLI commands against affected projects:
# Build affected projects
incrementalist -b dev -r -- build -c Release --nologo
# Run tests
incrementalist -b dev -r -- test -c Release --no-build --nologo
# Run in parallel
incrementalist -b dev -r --parallel -- build -c Release --nologo
# Stop on first error
incrementalist -b dev -r --continue-on-error=false -- build -c Release --nologo
📚 Documentation
- 🔍 How It Works - Technical details and architecture
- 🏗️ Building from Source - Build instructions and development setup
- ⚡ Dependency Graph Caching - Cache system explanation and best practices
📜 License
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Copyright 2015-2025 Petabridge
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Libgit2Sharp (>= 0.31.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.12.0)
- Microsoft.Extensions.Logging (>= 9.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 260 | 12/23/2025 |
| 1.2.0-beta.1 | 230 | 12/15/2025 |
| 1.1.0 | 269 | 9/3/2025 |
| 1.1.0-beta1 | 298 | 5/12/2025 |
| 1.0.0 | 265 | 4/18/2025 |
| 1.0.0-rc5 | 266 | 4/17/2025 |
| 1.0.0-rc4 | 259 | 4/17/2025 |
| 1.0.0-rc3 | 234 | 4/16/2025 |
| 1.0.0-rc2 | 278 | 4/14/2025 |
| 1.0.0-rc1 | 258 | 4/13/2025 |
| 1.0.0-beta4 | 171 | 2/25/2025 |
| 1.0.0-beta3 | 166 | 2/25/2025 |
| 1.0.0-beta2 | 164 | 2/24/2025 |
| 1.0.0-beta1 | 155 | 2/21/2025 |
| 0.9.0 | 373 | 11/22/2023 |
| 0.8.0 | 614 | 11/24/2022 |
| 0.7.0 | 673 | 5/24/2022 |
| 0.6.0 | 565 | 11/10/2021 |
| 0.5.0 | 595 | 6/16/2021 |
| 0.4.0 | 572 | 12/23/2020 |
* [Add more robust quoting for `dotnet` commands](https://github.com/petabridge/Incrementalist/pull/347)