Свойство Msbuild не учитывается при передаче параметра командной строки через powershell - PullRequest
1 голос
/ 26 декабря 2011

Я пытаюсь передать свойство через параметр командной строки ($ 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 Ответ

3 голосов
/ 26 декабря 2011

$ args [0] не раскрывается внутри строк, его необходимо заключить в запись подвыражения:

... "/p:AllComponents=$($args[0])"

Чтобы избежать этого синтаксиса, присвойте аргумент переменной и вставьте переменную в строку:

$argsZero= $args[0]
... "/p:AllComponents=$argsZero"

Для получения дополнительной информации введите в консоли следующее:

Get-Help about_Quoting_Rules
...