Как все мы уже знаем, VS2010 значительно обновил свою систему сборки, основанную на MSBuild.
По словам представителей MS (см. Комментарии в Visual Studio 2010 всегда перестраивает проект после спящего режима / перезапускакомпьютера ) MSBuild теперь внедряет себя в другие инструменты (такие как компиляторы C ++, компоновщики и т. д.), чтобы выяснить зависимости цели.
Одним из недостатков такого подхода является то, что теперь ваш проектможет быть принудительно восстановлен из-за изменений в нерелевантных файлах : (
В моем случае это C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN
, который периодически изменяется службой обновлений NVIDIA (32-битная версия Windows 7).
Iобнаружил, что, повернув параметры VS2010 " MSBuild build build of verbosity " и " MSBuild build build log file verbityity " в " Diagnostic ".
После этого я смог увидеть причину проблемы в окне «Вывод сборки»:
Task "CL" (TaskId:55)
Read Tracking Logs: (TaskId:55)
..\..\temp\Release\Editor\cl.read.1.tlog (TaskId:55)
Outputs for E:\USERS\A.USER.ORG\DEVEL\EDITOR\STDAFX.CPP: (TaskId:55)
E:\USERS\A.USER.ORG\DEVEL\TEMP\RELEASE\EDITOR\STDAFX.OBJ (TaskId:55)
C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN was modified at 23-Feb-12 12:08:20. (TaskId:55)
stdafx.cpp will be compiled. (TaskId:55)
...
Tracking command: (TaskId:55)
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe ... stdafx.cpp /clr:nostdlib (TaskId:55)
stdafx.cpp (TaskId:55)
Done executing task "CL". (TaskId:55)
Один из обходных путей - добавить несоответствиеt файлы в C ++ игнорируют список :
<ItemGroup>
<ClNoDependencies Include="NVDRSDB0.BIN" />
<ClNoDependencies Include="C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN" />
</ItemGroup>
К сожалению, это не помогает :( И я еще не проверял, как этот трюк работает на других ПК, где такие файлы не существуют.
Таким образом, остается вопрос: кто-нибудь знает о работающем решении этой проблемы ?
Я не пробовал устанавливать SP1 для VS2010 - по словам энтузиастов, этот шаг неЭто тоже не поможет.
Отключение службы обновлений NVIDIA может, вероятно, помочь (оно прекратит обновление файла), но есть или могут быть другие программы, которые не могут быть отключены таким образом (антивирус, другие утилиты и т. д.).
См. Также связанные вопросы: