Свойство Msbuild не учитывается при передаче параметра командной строки через powershell
Я пытаюсь передать свойство через параметр командной строки ($args[0]) следующим образом, используя Powershell, но это не рассматривается.
if ( Test-path -path $args[0]) {
&"$MsbuildBinPath\Msbuild.exe" $MSBuildFile /t:BuildAll "/p:AllComponents=$args[0]" $Logger $ErrorLogger
if ($LastExitCode -ne 0) {
Write-Host "It failed, send a mail"
}
}
Если я передаю свойство следующим образом, оно рассматривается.
"/p:AllComponents=List.txt"
Почему аргументы командной строки не учитываются при непосредственном применении?
Я могу сохранить значение командной строки в некоторой переменной и передать, но есть ли другой механизм, чтобы передать его напрямую?
1 ответ
Решение
$args[0] не раскрывается внутри строк, его нужно заключить в нотацию подвыражения:
... "/p:AllComponents=$($args[0])"
Чтобы избежать этого синтаксиса, присвойте аргумент переменной и вставьте переменную в строку:
$argsZero= $args[0]
... "/p:AllComponents=$argsZero"
Для получения дополнительной информации введите в своей консоли следующее:
Get-Help about_Quoting_Rules