2
votes

Consider a .csproj containing the following directive:

< Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

There's a standalone TFS Build service installed on a machine, with a default Controller and one Agent. The TFS components were installed; Visual Studio was not installed.

When compiling an ASP.NET MVC 2 Web Application (targeting .NET 4), the TFS Build service encounters an error:

C:\somepath\foo.csproj (219): The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

TF270015: 'MSBuild.exe' returned an unexpected exit code. Expected '0'; actual '1'.

It's true: there's no sub-directory "WebApplications" in the "C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0" directory.

It seems that this subset wasn't included in the install of the TFS Build service. TFS doesn't give any options on what pieces are installed for Build service.

What's the most appropriate way to install these artifacts, and any dependencies, on this TFS Build machine? Could this have been avoided?

3

3 Answers

2
votes

Have you tried creating the path C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\ manually and copying the file Microsoft.WebApplication.targets there? If Microsoft.WebApplication.targets doesn't contain references to some specific build tasks that should do the trick.
At least that worked for Visual Studio 2005.

0
votes

Check for unwanted references like 'stdole.dll' in your references and remove it. connect to tfs again (to refresh) try to build again.

-1
votes

Best solution is to always install VS2010 on your build machine.