Как передать свойства шоколадной версии psake

Я установил psake с помощью Chocolatey. Это позволяет запускать psake с помощью команды psake либо из PowerShell, либо из командной строки Windows.

Однако, когда я пытаюсь передать свойства в psake, используя следующую команду

psake TestProperties -properties @{"tags"="test"}

Я получаю следующую ошибку:

PS D:\projects\WebTestAutomation> psake TestProperties -properties @{"tags"="test"}
"& 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties System.Collections.Hashtable
C:\Chocolatey\lib\psake.4.2.0.1\tools\psake.ps1 : Cannot process argument transformation on parameter 'properties'. Cannot convert the "System.Collections.Hashtable" value of
 type "System.String" to type "System.Collections.Hashtable".
At line:1 char:80
+ & 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties <<<<  System.Collections.Hashtable; if ($psake.build_success -eq $false) { exit 1 } else { e
xit 0 }
    + CategoryInfo          : InvalidData: (:) [psake.ps1], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,psake.ps1

Любые идеи о том, как преодолеть это?


person Castrohenge    schedule 13.08.2013    source источник


Ответы (1)


Я решил это, передав свойства Hashtable как string.

psake TestProperties -properties "@{tags='test'}"

Я также рекомендую запускать команду из командной строки, а не из PowerShell. Поскольку команда psake работает, вызывая файл .bat, который затем вызывает .cmd, который, в свою очередь, выполняет файл .ps1, использование амперсандов в свойствах вызывало проблемы при выполнении команды из powershell.

Например, следующая команда успешно запускается из командной строки, но при запуске из консоли powershell возникают ошибки:

psake TestProperties -properties "@{tags='test^&wip'}"

Обратите внимание на использование ^ для экранирования символа &.

person Castrohenge    schedule 13.08.2013