incremental-build

Diagnose and fix MSBuild incremental build failures using binlog analysis.

Updated Jul 20, 2026
One-click install
npx skills add https://github.com/Netcodr81/kinetic-reports --skill incremental-build-netcodr81
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: incremental-build
Source: https://github.com/Netcodr81/kinetic-reports/tree/main/.github/skills/incremental-build
Command: npx skills add https://github.com/Netcodr81/kinetic-reports --skill incremental-build-netcodr81

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Subsequent builds rebuild everything even when nothing changed, wasting developer time. This Skill helps you find why MSBuild targets re-execute unnecessarily and restore fast no-op builds. ## Core Features & Use Cases - Root-Cause Diagnosis: Identify the 8 most common causes of broken incremental builds, including missing Inputs/Outputs, volatile output paths, and unregistered FileWrites. - Binlog-Based Analysis: Capture two builds with /bl flags and search for "Building target completely" vs "Skipping target" messages to pinpoint which input file triggered a rebuild. - Visual Studio FUTDC Troubleshooting: Diagnose cases where builds behave differently in Visual Studio versus the command line due to the Fast Up-to-Date Check. - Use Case: Your team's solution takes 5 minutes to rebuild after editing a single file. Use this Skill to generate binlogs, find the custom target missing Inputs/Outputs, and apply the fix pattern to restore incremental behavior. ## Quick Start Analyze why my .NET project rebuilds everything on the second build and tell me which targets are not being skipped.

Frequently Asked Questions about incremental-build

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make MSBuild incremental builds skip unchanged targets?▼

Add both Inputs and Outputs attributes to custom targets so MSBuild can compare file timestamps and skip up-to-date targets. Use stable paths like $(IntermediateOutputPath) and register generated files in the FileWrites item group.

How to find why a target rebuilds using binlog?▼

Build twice with dotnet build /bl:first.binlog and /bl:second.binlog, then search the second log for "Building target completely" versus "Skipping target" messages. Search for "is newer than output" to find the exact input file that triggered the rebuild.

Why does my build rebuild in Visual Studio but not on the command line?▼

Visual Studio uses its own Fast Up-to-Date Check (FUTDC) that is separate from MSBuild's Inputs/Outputs mechanism and can be wrong for custom targets or non-standard item types. Set DisableFastUpToDateCheck to true or enable verbose up-to-date check logging to diagnose.

What causes MSBuild incremental builds to break?▼

The most common causes are missing Inputs/Outputs on custom targets, volatile values like timestamps or GUIDs in output paths, file writes outside tracked Outputs, missing FileWrites registration, and glob or property changes between builds.

When should I use Returns instead of Outputs on an MSBuild target?▼

Use Returns when you only need to pass items to calling targets without affecting incremental build checks. Outputs serves double duty as both the incremental check and the return value, while Returns only defines the return value.