$(MSBuildProjectDirectory)和“程序文件(x86)”文件夹

时间:2013-03-22 15:02:02

标签: msbuild

我正在使用属性MSBuildProjectDirectory和MSBuild。

该项目位于:

  

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

在构建期间,MSBuildProjectDirectory被评估为:

  

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

我得到一个“系统找不到指定的文件”错误。

我是否需要移动到其他文件夹,还是可以找到正确的路径?

2 个答案:

答案 0 :(得分:6)

如果您使用的是Visual Studio 2010 / MSBuild 4.0,则某些包含括号的属性会发生这种情况。微软承认,当使用MSBuild 4.0时,这是从VS2008到VS2010的回归错误: http://connect.microsoft.com/VisualStudio/feedback/details/532677/msbuild-4-0-usingtask-cannot-have-a-path-with-parentheses

根据以上链接,以下是括号内的问题:

  • UsingTask
  • MsBuildProjectDirectoryNoRoot
  • MsBuildProjectDirectory
  • MsBuildProjectFullPath

解决方法:目前,在使用MSBuild 4.0时,请将位置更改为不包含括号的路径。

答案 1 :(得分:2)

使用

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

而不是

$(MSBuildProjectDirectory)