November 2010 - Posts

Moving to VS2010 caused build server to break - errorMSB3454, MSB3454

 Last night I migrated one of our solutions which contained many dlls projects and a couple of websites from VS2008 SP1 to VS2010, after a few changed to the website configuration the solution was building as expected on my machine.

Committing the changes forced a new build on our build server (CruiseControl.NET) running on Windows Server 2008 64Bit which shortly failed with the following error:


errorMSB3454: Tracker.exe is required to correctly incrementally generate resources in some circumstances, such as when building on a 64-bit OS using 32-bit MSBuild. This build requires Tracker.exe, but it could not be found. The task is looking for Tracker.exe beneath the InstallationFolder value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A. To solve the problem, either: 1) Install the Microsoft Windows SDK v7.0A or later. 2) Install Microsoft Visual Studio 2010. 3) Manually set the above registry key to the correct location. Alternatively, you can turn off incremental resource generation by setting the "TrackFileAccess" property to "false".

Searching lead me a post by Brad Wilson Working Around Build Error MSB3454 which I didn't try but instead tried the solution given in one of the comments which linked to Andy Pook's post Building without Visual Studio 

A quick summary of the post:

1 Install Microsoft Windows SDK v7.1 (We already had it installed in preparation for the move to VS2010 assuming it would just work)

2 Start Windows SDk 7.2 Command Prompt and enter the following

cd Setup

WindowsSdkVer –version:v7.1

3 Also remember to copy the "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0" folder to the build machine if you want to build web projects.

MSBuild now used the 7.1 SDK when building VS solution files instead of searching for 7.0A SDK, which is only installed when you install VS2010, and our build server is working again.