MSBuild会对最新的目标发出以下消息:
Skipping target "MyTarget" because all output files are up-to-date with respect to the input files.
实际的检查是如何进行的?
MSBuild会对最新的目标发出以下消息:
Skipping target "MyTarget" because all output files are up-to-date with respect to the input files.
实际的检查是如何进行的?
检查增量构建的流程:
目标元素可以具有Inputs属性,表示目标期望作为输入的项目,也可以具有Outputs属性,表示其作为输出生成的项目。 MSBuild尝试在这些属性值之间找到1对1的映射关系。如果存在1对1的映射关系,则MSBuild将比较每个输入项的时间戳与其相应输出项的时间戳。 没有1对1映射关系的输出文件将与所有输入文件进行比较。如果输出文件与其输入文件或文件的时间戳相同或更新,则该项目被视为最新状态。
如果所有输出项目都是最新的,则MSBuild跳过该目标。这种增量构建目标可以显著提高构建速度。 如果只有一些文件是最新的,则MSBuild执行目标但跳过最新的项,并因此使所有项保持最新状态。这称为部分增量构建。