我创建了一些使用 msbuild 任务构建项目的 msbuild 脚本。我将要构建的项目列表(不是解决方案文件)作为参数传递。
在 VS2010 中,第二次构建解决方案而不修改任何文件将几乎同时完成,因为它检测到没有任何更改。
第二次/第三次/第四次执行 msbuild 脚本将花费相同的时间。
任何想法如何使 msbuild 的行为与 vs2010 相同?
谢谢,伊兰。
我创建了一些使用 msbuild 任务构建项目的 msbuild 脚本。我将要构建的项目列表(不是解决方案文件)作为参数传递。
在 VS2010 中,第二次构建解决方案而不修改任何文件将几乎同时完成,因为它检测到没有任何更改。
第二次/第三次/第四次执行 msbuild 脚本将花费相同的时间。
任何想法如何使 msbuild 的行为与 vs2010 相同?
谢谢,伊兰。
Microsoft 提供的许多 MSBuild 任务使用IncrementallBuild或Filetracker来跟踪哪些文件用于生成给定文件的输出。了解输入和输出之间的关系 MSBuild 可以创建依赖关系图。
通过比较输出文件和所有输入文件的时间戳可以消除许多任务的执行。如果给定输出文件的所有输入文件的时间戳都比输出文件“更低/之前”,这意味着没有输入文件被修改,MSBuild 可以跳过执行此任务。
对于 VC++ 项目,此信息被记录到 *.tlog 文件中(存储在项目的 IntermediateDirectory $(IntDir) 中)。通过执行目标 Rebuild,您可以跳过使用IncrementalBuild 功能,因为 rebeuild 意味着清理和构建(因此 tlog 文件被删除)。