Building Web Application project using MSBuild from command line on 64-bit: missing targets file

Posted by James Allen on Stack Overflow See other posts from Stack Overflow or by James Allen
Published on 2010-03-26T12:45:09Z Indexed on 2010/03/26 19:13 UTC
Read the original article Hit count: 548

Building a solution containing a web application project using MSBuild from powershell like this:

msbuild "/p:OutDir=$build_dir\" $solution_file

Works fine for me on 32-bit, but on a 64-bit machine I am running into this error:

error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

I am using Visual Studio 2008 and powershell v2. The problem has already been documented here and here. Basically on 64-bit install of VS, the Microsoft.WebApplication.targets needed by MSBuild is in the Program Files(x86) dir, not the Program Files dir, but MSBuild doesn't recognise this and so looks in the wrong place.

The two solutions are not ideal:

  1. Manually copy the file on 64-bit from Program Files(x86) to Program Files. This is a poor solution - every dev will have to do this manually.
  2. Manually edit the csproj file so MSBuild looks in the right place. Again not ideal: I would rather not have to get everyone on 64bit to manually edit csproj files on every new project.

e.g.

<Import Project="$(MSBuildExtensionsPathx86)\$(WebAppTargetsSuffix)" Condition="Exists('$(MSBuildExtensionsPathx86)\$(WebAppTargetsSuffix)')" />

Ideally I want a way to tell MSBuild to import the target file form the right place from the command line but I can't work out how to do that. Any solutions?

© Stack Overflow or respective owner

Related posts about msbuild

Related posts about powershell