VS2010编译如何知道跳过未修改的文件

时间:2013-07-03 14:13:02

标签: msbuild msbuild-4.0

我创建了一些使用msbuild任务构建项目的msbuild脚本。我将要构建的项目列表(不是解决方案文件)作为参数传递。

在VS2010中,第二次构建解决方案而不修改任何文件几乎会在同一时间完成,因为它检测到没有任何更改。

执行msbuild脚本第二次/第三次/第四次将花费相同的时间。

如何让msbuild的行为与vs2010相同?

谢谢, 叶兰。

1 个答案:

答案 0 :(得分:1)

Microsoft提供的许多MSBuild任务使用IncrementallBuildFiletracker来跟踪用于生成给定文件输出的文件。了解输入和输出之间的关系MSBuild可以创建依赖图。

通过比较输出文件的时间戳和所有输入文件可以消除许多任务的执行。 如果给定输出文件的所有输入文件的时间戳都比输出文件“低于/低于”,则表示没有修改任何输入文件,MSBuild可以跳过执行此任务。

我将VC ++项目的这个信息记录到* .tlog文件中(存储在项目的IntermediateDirectory $(IntDir)中)。 通过执行目标重建,您可以跳过使用 IncrementalBuild功能它,因为rebeuild意味着清理和构建(因此删除了tlog文件)。