Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does MSBuild check whether a target is up to date or not?

MSBuild emits the following message for up to date targets:

Skipping target "MyTarget" because all output files are up-to-date with respect to the input files.

How is the actual check performed?

like image 627
sergtk Avatar asked Aug 08 '11 12:08

sergtk


People also ask

Will MSBuild Compile without any target?

If MSBuild determines that any output files are out of date with respect to the corresponding input file or files, then MSBuild executes the target. Otherwise, MSBuild skips the target. After the target is executed or skipped, any other target that lists it in an AfterTargets attribute is run.

What is target in MSBuild?

A target element can have both Inputs and Outputs attributes, indicating what items the target expects as input, and what items it produces as output. If all output items are up-to-date, MSBuild skips the target, which significantly improves the build speed. This is called an incremental build of the target.


1 Answers

Check flow of Incremental Build:

A target element can have both an Inputs attribute, which indicates what items the target > expects as input, and an Outputs attribute, which indicates what items it produces as output MSBuild attempts to find a 1-to-1 mapping between the values of these attributes. If a 1-to-1 mapping exists, MSBuild compares the time stamp of every input item to the time stamp of its corresponding output item. Output files that have no 1-to-1 mapping are compared to all input files. An item is considered up-to-date if its output file is the same age or newer than its input file or files.

If all output items are up-to-date, MSBuild skips the target. This incremental build of the target can significantly improve the build speed. If only some files are up-to-date, MSBuild executes the target but skips the up-to-date items, and thereby brings all items up-to-date. This is known as a partial incremental build.

like image 58
sll Avatar answered Sep 20 '22 14:09

sll