Я могу выполнить следующую команду в PowerShell:
msbuild "c:\some\spaced path\project.sln" /p:MvcBuildViews=False /p:OutDir="c:\\some\\spaced path\\deploy\\Package\\"
Пути изменены, но реальные также содержат разделенный компонент.Двойная косая черта - это трюк, например, этот ответ .
Если я запускаю это напрямую, msbuild
понимает путь.Тем не менее, он должен работать в psake следующим образом:
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: можно указать только один проект».