Visual Studio иногда решает перестроить весь мой огромный проект из-за одного небольшого изменения.Я включил ведение журнала сборки до Diagnostic, чтобы увидеть, в чем проблема, и вот что я вижу:
< Bunch of spam >
Outputs for C:\<snip>\PRECOMPILEDHEADERS.CPP:
C:\<snip>\PRECOMPILEDHEADERS.OBJ
All outputs are up-to-date.
Forcing rebuild of all source files due to a change in the command line
... и затем он перестраивает мои предварительно скомпилированные заголовки, а затем все остальное.
Это происходит, когда я изменяю один файл .cpp или .h внутри проекта.Я ничего не меняю в настройках проекта.Это также не случается все время для того же самого изменения;это случайно.
Есть идеи, что здесь происходит?Где я могу получить больше информации?Я попытался включить отладку через описание в http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx, но больше не давало информации.Я не могу понять, откуда взялась эта «Принудительная перестройка всех исходных файлов из-за изменения в командной строке».Его нет ни в одном из заводских файлов MSBuild.
Некоторая другая информация: это проект C ++ / CLI dll, который связывает множество других проектов, включая C #, нативный c ++ и другие dll C ++ / CLI.Я попытался удалить все проекты C # из зависимостей, поскольку они, как правило, вызывают проблемы, но это не изменило его.Я погуглил эту конкретную строку, но моя ситуация не совпадает ни с одной из других людей, сообщающих об этом.(Один использовал Intel C ++, другой был MSBuild из командной строки и менял регистр. Я использую решение для сборки из самой Visual Studio).
Правка для объяснения общих исправлений, которые я пробовал:
Я пытался построить только проект.Делает то же самое.
Я не включаю никакие файлы .h, которые не существуют.
Я удалил папки bin / object и перестроил с нуля.Обычно это приводит к потере пары сборок, но потом возвращается.
Edit # 2:
В журнале обнаружилось что-то подозрительное ранее:
3>Using "ResolveNonMSBuildProjectOutput" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
3>Task "ResolveNonMSBuildProjectOutput"
3> Resolving project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj".
3> Project reference "..\..\..\..\CommonCore\VS2010\Project1\Project1.vcxproj" has not been resolved.
Это повторяется для нескольких моих проектов ... Я пойду за этим и посмотрю, может быть, это проблема с путеводными ссылками проекта.