I have a solution with Many dlls and two exe's. The exes are Dependant on the dlls when I make an internal change to any of the dlls one of my exes rebuilds and generates all its code every time. My assumption would be that it would only need to relink if no source file it depended on had changed. Could there be a setting I am missing causing it to do a full rebuild every time.
Have you verified that there are no cyclic references/dependencies between your dll and your exe?
I am pretty sure that Studio (more specifically MSBuild) does not track dependancies at the source file level, so when you are changing the source to the dll, all visual studio sees is that a dll that it depends on has changed, so it rebuilds the exe.
This usually happens if the exe is dependent on a .h file from your dll project (includes the .h). If you change the .h it will make the exe rebuild. If you change the .cpp, the exe shouldn't rebuild. At least that's how it works for me. Generally DevStuido is smart enough to figure out what needs to be rebuilt and only builds what needs to be done.
@David MSbuild does certainly do deep checking of timestamps. It knows what headers your compilation used all they way back to windows.h or whatever. If you dial up verbosity to detailed you will see what file triggered the build, and if it's a header it will be shown there.
Dan/msbuild