我可以在 PowerShell 中执行以下命令:
msbuild "c:\some\spaced path\project.sln" /p:MvcBuildViews=False /p:OutDir="c:\\some\\spaced path\\deploy\\Package\\"
路径已更改,但真实路径也包含间隔组件。双斜线是来自例如this answer的一个技巧。
如果我直接运行它,就可以msbuild
理解路径。但是,它需要像这样运行:
exec { msbuild $SolutionFile "/p:MvcBuildViews=False;OutDir=$OutputDir" }
如果路径没有空格,那可以工作,但我想调整它以使用空格(对于 sln 路径和 OutDir)。我试过了,但我无法弄清楚逃脱。
编辑:
为了澄清,如果我在 psake 中对完整路径进行硬编码,它也可以工作:
exec { msbuild "c:\some\spaced path\project.sln" /p:MvcBuildViews=False /p:OutDir="c:\\some\\spaced path\\deploy\\Package\\" }
但是,它需要使用 OutputDir 变量(不是双斜杠转义的)。因此,我为此添加了一个临时变量,然后尝试构造命令行。:
$double_slashed_dir = $OutputDir.Replace('\', '\\');
write $double_slashed_dir;
exec { msbuild $SolutionFile /p:MvcBuildViews=False "/p:OutDir=`"$double_slashed_dir`"" }
这不起作用(我尝试了几种变体)。有了上面我得到“MSB1008:只能指定一个项目”。