当我尝试将一些目录路径传递到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时删除尾部反斜杠?
答案 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>