如何在MSBuild WebProjectOutputDir中包含空格?

Chr*_*Dog 21 msbuild directory-structure pathing

我试图从命令行调用MSBuild.当我使用没有空格的路径时,一切都工作正常,但现在我有一个有空格的路径,命令失败.

命令(作品):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutDir=c:\temp\deploy\funAndGames\Deployment\bin\ 
/p:WebProjectOutputDir=c:\temp\deploy\funAndGames\Deployment\ 
/p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

然后我添加了引号并将OutDir更改为OutPath(不起作用):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutPath="c:\temp\deploy\funAndGames\Deployment\bin\" 
/p:WebProjectOutputDir="c:\temp\deploy\funAndGames\Deployment\" 
/p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

我的目标是这样的(不起作用):

"C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
/t:Rebuild "C:\Projects\myProject.csproj" 
/p:OutPath="c:\temp\deploy\fun and games\Deployment\bin\" 
/p:WebProjectOutputDir="c:\temp\deploy\fun and games\Deployment\" 
/p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)

有关空格的OutDir/OutPath和WebProjectOutputDir语法的任何帮助?可能吗?如果不是,有人知道原因是什么(由于一些Url没有空格类型的东西?)

joh*_*oss 23

刚刚发现了这个问题的答案.要处理空格,您应该在所有文件夹上使用转义字符\.基本上

/p:OutPath="c:\temp\deploy\fun and games\Deployment\bin\"
Run Code Online (Sandbox Code Playgroud)

应该

/p:OutPath="c:\\temp\\deploy\\fun and games\\Deployment\\bin\\"
Run Code Online (Sandbox Code Playgroud)

而且神奇地它起作用了!

  • 那么,当你使用像$(ProjectDir)这样的宏时,你是如何做到这一点的? (4认同)
  • @Mateo你可以使用以下内容:`/ p:ProjectDir =" $(ProjectDir.Replace('\','\\'))"` (2认同)

小智 5

尝试添加" ex:

/p:OutPath=""c:\temp\deploy\fun and games\Deployment\bin\""
Run Code Online (Sandbox Code Playgroud)