5

Chocolatey を使用して psake をインストールしました。psakeこれにより、powershell または Windows コマンド ラインからコマンドを使用して psake を実行できます。

ただし、次のコマンドを使用してプロパティを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

これをどのように克服するかについてのアイデアはありますか?

4

1 に答える 1

6

Hashtableプロパティを として渡すことでこれを解決しましたstring

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

また、powershell ではなく、コマンド プロンプトからコマンドを実行することをお勧めします。このpsakeコマンドはファイルを呼び出し、.batファイルが を呼び出してファイル.cmdを実行することで機能する.ps1ため、プロパティでアンパサンドを使用すると、コマンドが powershell から実行されたときに問題が発生しました。

たとえば、次のコマンドはコマンド プロンプトから正常に実行されますが、powershell コンソールから実行するとエラーが発生します。

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

文字^をエスケープするために を使用することに注意してください。&

于 2013-08-13T12:46:30.717 に答える