After much hunting I have the answer.
Firstly - it does not appear to have anything to do with skipping due to files being up-to-date.
by outputting the results of the build to text file I was able to hunt down a couple of lines that did not exist when building on my old machine including this warning:
(ResolveAssemblyReferences target) ->
C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1635,5): warning MSB3274: The primary reference "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". [C:\workspaces\git\soln\src\Orchard.Web\Modules\Orchard.Workflows\Orchard.Workflows.csproj]
We had previously updated our main web project to target .NET Framework 4.5, but some of the projects within the solution had been left on version 4.0. This worked fine on my old machine (the ones left on 4.0 should not have had references to anything built against 4.5), but clearly had problems on the new one.
On a hunch I upgraded all my projects within the solution (all 119) using this awesome tool http://visualstudiogallery.msdn.microsoft.com/47bded90-80d8-42af-bc35-4736fdd8cd13 , after which build succeeds.
I should be clear in pointing out
- The codebase was exactly the same on both machines
- We never had a problem that required upgrading the target versions of the additional projects before, just on this single machine
- The versions of msbuild and .NET frameworks are to all inspection, identical
Anyway - I hope someone reads this and gets to the root of their problem faster than I did!