I've decided to create a 'question' which is a partial answer and relates to another question (but to which there may well be better answers.) The rationale here is that I'm currently unable to comment or post to this post below due to my terrible reputation ... (I'm new to this site I found the answers to another post on stack overflow linked here useful, but they didnt in the end answer the question I had.)
Basically I was finding that projects would completely rebuild when switching from using MSBuild on the command line (wrapped up in a set of scripts) on a set of automatically generated sln/vcproj files to a build in developer studio VS2013. Turning on diagnostics in developer studio did not give any indication to why.
After a fair bit of poking around I discovered that the reason for this is that when MSBuild was doing the build, deep down files with the extension .lastbuildstate that get created by the build in the tlog directories contained the entry
VCToolArchitecture=Native64Bit
When I then loaded the project into developer studio, a complete rebuild would occur of the same configuration. The build would change these files: now they'd contain
VCToolArchitecture=Native32Bit
Even though I was definitely doing a 64 bit build ... both MSBuild and developer studio I believe are actually 32 bit tools that are doing a 64 bit build, so why MSBuild writes Native64Bit is a mystery here!
I was able to work around the problem then by scripting a replacement of Native64Bit with Native32Bit after a command line build before a build in developer studio. This then seems to not rebuild everything and the resultant execs seem to execute just fine ... but I cant help feeling that this sort of monkeying around should be unnecessary.
Intrigued to know if others have seen similar issues and what a better workaround would be (e.g. is there some masterful MSBuild switch that controls this?)