我有一个相当大的解决方案(约50个项目,全部是C#),我正在VS 2012(更新4)中构建它。我注意到,在从VS内完成完整重建后,直接按F6进行构建会导致一个项目重新构建,尽管我没有碰过任何东西。
第二次构建的调用正确地检测到所有项目都是最新的。
将msbuild输出设置为详细诊断并检查第一次构建调用的输出会显示如下:
NuGet package restore started.
Restoring NuGet packages for solution XXX.
[... some boring lines on NuGet Package restore]
All packages are already installed and there is nothing to restore.
NuGet package restore finished.
Project 'YYY' is not up to date. Last build was with unsaved files.
------ Build started: Project: YYY, Configuration: Debug Any CPU ------
Build started 21-11-2013 21:20:54.
我对“项目‘YYY’不是最新的。上次构建时使用了未保存的文件”
这个消息特别感兴趣。我没有未保存的文件。有趣的是,当在Google和Bing上搜索此消息时,它们都没有给出任何结果。
有什么线索可以解释这是什么原因吗?如何调试构建过程中的这一部分?我相信这一部分的构建过程甚至比MsBuild的调用更早(至少新的NuGet Package Restore功能在MsBuild被调用之前启动,我相信MsBuild从“Build started”行开始启动)。