Be.St.
Be.St.

Reputation: 4181

$(MSBuildProjectDirectory) and "program files (x86)" folder

I'm using the property MSBuildProjectDirectory with MSBuild.

The project is located in:

C:\Program Files (x86)\Jenkins\workspace\MyProject

During build MSBuildProjectDirectory is instead evaluated as:

C:\Program Files %28x86%29\Jenkins\workspace\MyProject

and I get a "The system cannot find the file specified" error.

Do I need to move to a different folder or can I get the right path?

Upvotes: 8

Views: 2771

Answers (2)

user6094291
user6094291

Reputation: 21

Use

$([MSBuild]::Unescape('$(MSBuildProjectDirectory)'))

instead of

$(MSBuildProjectDirectory)

Upvotes: 2

Michael
Michael

Reputation: 1282

If you are using Visual Studio 2010 / MSBuild 4.0, this will happen with certain properties that contain parentheses. Microsoft admitted that this was a regression error from VS2008 to VS2010, when using MSBuild 4.0: http://connect.microsoft.com/VisualStudio/feedback/details/532677/msbuild-4-0-usingtask-cannot-have-a-path-with-parentheses

According to the above link, the following have an issue with parentheses:

  • UsingTask
  • MsBuildProjectDirectoryNoRoot
  • MsBuildProjectDirectory
  • MsBuildProjectFullPath

Resolution: For now, when using MSBuild 4.0, change the location to a path that does not contain parentheses.

Upvotes: 7

Related Questions