MSBuild has mature incremental execution from explicit target inputs and outputs, but almost no automatic discovery of those inputs and outputs. It is best described as shallow, declarative inference, not dependency inference comparable to Ninja or Bazel.
| Capability | Current support |
|---|---|
| Infer a target's inputs/outputs by inspecting its tasks | No |
Skip a target using declared Inputs/Outputs |
Yes, using file timestamps |
| Partially execute a target for changed items | Yes, when a one-to-one item transform can be recognized |
| Reconstruct items/properties when a target is skipped | Yes, when derivable from project XML |