如何将带空格的路径和尾部反斜杠作为属性传递给MSBuild

时间:2013-04-25 07:33:23

标签: properties msbuild

当我尝试将一些目录路径传递到MSBuild脚本时,如下所示:

MSBuild.exe myproj.proj /p:DirPath="C:\this\is\directory\"

在.proj文件中我将其用作

<PropertyGroup>
  <FilePath>$(DirPath)file.txt</FilePath>
<PropertyGroup>

然后MSBuild将FilePath组成c:\this\is\directory"file.txt。如果我在没有引号的情况下传递DirPath但是使用尾部斜杠(/p:DirPath=c:\this\is\directory\)或没有尾部斜杠但是引号(/p:DirPath="c:\this\is\directory\"),那么一切正常。

可以做什么来允许传递具有尾部斜杠的目录路径(它会更方便)和引号(因为路径可以包含空格)?或者它是MSBuild中的一个错误,我应该使用一些解决方法,比如在将它传递给msbuild时删除尾部反斜杠?

1 个答案:

答案 0 :(得分:9)

这是因为在命令行上设置属性的方式。 MSBuild正在将“添加到值的末尾,因为最后一个'\'因此被附加到字符串路径的末尾。

从命令行设置值时添加一个额外的\,字符串将按预期为您添加反斜杠,或者不将“放在最后。”

MSBuild.exe myproj.proj /p:DirPath="C:\this\is\directory\\"

该值为:C:\ this \ is \ directory \ file.txt

另一个问题是您可以将此功能放在MSBuild项目中以替换“:

<PropertyGroup>
    <DirPath>$(DirPath.Replace('"',""))</DirPath>
</PropertyGroup>