Простой Powershell Msbuild с параметром завершается ошибкой
Я пытаюсь передать простую переменную,
Без параметров
msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
Попробуй 1
$buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"'
msbuild MySolution.sln + $buildOptions
-> причина MSB1008
Попробуй 2
$command = "msbuild MySolution.sln" + $buildOptions
Invoke-expression $command
-> причина MSB1009
Я попробовал решение в этом посте, но я думаю, что это другая ошибка.
2 ответа
Попробуйте один из них:
msbuild MySolution.sln $buildOptions
Start-Process msbuild -ArgumentList MySolution.sln,$buildOptions -NoNewWindow
Кстати, в PowerShell v3 есть новая функция только для таких ситуаций, все, что после -% обрабатывается как есть, поэтому ваша команда будет выглядеть так:
msbuild MySolution.sln --% /p:Configuration=Debug /p:Platform="Any CPU"
См. Этот пост для получения дополнительной информации: http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/
Вы должны поместить пробел где-то между MySolution.sln
и список параметров. Как у вас есть, командная строка приводит к
msbuild MySolution.sln/p:Configuration=Debug /p:Platform="Any CPU"
А MSBuild будет считать "MySolution.sln/p:Configuration=Debug" именем файла проекта / решения, что приведет к MSB10009: Project file does not exist.
,
Вы должны убедиться, что полученная командная строка выглядит примерно так (обратите внимание на пробел после MySolution.sln
:
msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
Есть много способов убедиться, что используя синтаксис Powershell, один из них:
$buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"'
$command = "msbuild MySolution.sln " + $buildOptions # note the space before the closing quote.
Invoke-Expression $command