7

次のビルド後のイベントコードを実行しようとしていますが、役に立たないエラーが発生します:

"c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -file "$(SolutionDir)tools\nuget_pack.ps1"

試す前に、次のPSスクリプトを実行しました。

Set-ExecutionPolicy unrestricted

私は何が欠けていますか?

アップデート

これは奇妙なことです。現在、VSでエラーは発生していません。しかし、スクリプトは機能していません。PowerShellコンソールで実行すると、次のエラーが発生します。

ここに画像の説明を入力してください

4

3 に答える 3

16

Visual Studioは、ビルド後のイベントスクリプトを.BATファイルに書き込み、cmd.exeを使用して実行します。したがって、使用& "<path-to-powershell>"は機能しません。実行するだけです:

Powershell.exe -file "$(SolutionDir)tools\nuget_pack.ps1"

また、ソリューションを構築する他のマシンで実行ポリシーの問題が発生する可能性が高いと思われる場合は、次の方法を検討してください。

Powershell.exe -ExecutionPolicy Unrestricted -file "$(SolutionDir)tools\nuget_pack.ps1" 
于 2011-09-03T03:39:39.740 に答える
8

次のように、Powershellでエラーを再現できます。

"this is a string" -file "my.ps1"

これは、最初の文字列を文字列、フォーマットフラグ-fileとして-f受け取り、フォーマット置換の右側に値式がないことを示しています。

このようにしてみてください:

&"c:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" -file "$(SolutionDir)tools \ nuget_pack.ps1"

(Keithが指摘しているように、これはPowershellよりもbatファイルから実行されるため機能しません。)

あるいは単に:

powershell.exe -file "$(SolutionDir)tools\nuget_pack.ps1"
于 2011-09-02T15:39:59.770 に答える
1

Visual StudioからPowerShellスクリプトを呼び出す前に、ExecutionPolicyを次のようなPowerShellウィンドウから無制限に設定します...

Set-ExecutionPolicy -Scope CurrentUser;
ExecutionPolicy: unrestricted;

次の方法でPowerShellスクリプトを呼び出します。

powershell.exe $(SolutionDir)Setup.ps1 -SolutionDir $(SolutionDir) -ProjectPath $(ProjectPath)

ここに画像の説明を入力してください

次に、スクリプトでは、いつでも次のようなパラメータを読み取ることができます...

param([string]$SolutionDir,
     [string]$ProjectPath);
#Write-Host ($SolutionDir +" Call this script with following aruments");
#Write-Host ($ProjectPath +" Call this script with following aruments");
于 2017-01-19T09:59:38.207 に答える