As all of us already know VS2010 has got an major upgrade of its build system, which is based on MSBuild.
According to MS representatives (see comments in Visual Studio 2010 always rebuild project after hibernation/restart of computer) MSBuild now injects itself into other tools (like C++ compilers, linkers, etc.) to find out the dependencies of a target.
One of the drawbacks of such approach is that now your project may be forcedly rebuilt because of modifications in irrelevant files :(
In my case it is C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN
, which is periodically changed by NVIDIA update service (Windows 7 32-bit).
I've discovered that by turning VS2010 options "MSBuild project build output verbosity" and "MSBuild project build log file verbosity" to "Diagnostic".
After that I was able to see the cause of the issue in the Build Output Window:
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)
One of the workarounds is to add the irrelevant files to C++ ignore list:
<ItemGroup>
<ClNoDependencies Include="NVDRSDB0.BIN" />
<ClNoDependencies Include="C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN" />
</ItemGroup>
Unfortunately this doesn't help :( And I didn't yet check how this trick works on other PCs, where such files don't exist.
So the question remains: is anybody aware of the working solution for this problem?
I didn't try installing SP1 for VS2010 - according to enthusiast this step doesn't help either.
Disabling NVIDIA update service may probably help (it will stop updating the file), but there are or may be other software which cannot be disabled this way (antivirus, other utilities, etc.).
See also related questions:
I have this same problem, except that the "modified" file in my case is
C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS
Microsoft has admitted there is a bug (which will be fixed in the next release) and suggested workarounds
http://connect.microsoft.com/VisualStudio/feedback/details/715572/unexpected-rebuild-of-projects
http://connect.microsoft.com/VisualStudio/feedback/details/649139/vs2010-does-complete-rebuild-based-on-completely-unrelated-file
but none of these has worked for me so far. I'm still trying to muck with my
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets
file and add something like the following to my property sheets
<ItemGroup>
<ClNoDependencies Include="C:\PROGRAMDATA\SOPHOS\SOPHOS ANTI-VIRUS\CONFIG\CONFIG.BOPS"/>
</ItemGroup>
but I have had no luck so far. Perhaps you can get this work-around to work for you? (Let me know if it does!)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With