次の方法で共有


Exec タスク

指定された引数を使って、指定されたプログラムまたはコマンドを実行します。

パラメーター

Exec タスクのパラメーターの説明を次の表に示します。

パラメーター 説明
Command 必須の String 型のパラメーターです。

実行するコマンドです。 attrib などのシステム コマンド、または program.exerunprogram.batsetup.msi などの実行可能ファイルを指定できます。

このパラメーターで複数のコマンド行を指定できます。 または、複数のコマンドをバッチ ファイルに入れ、このパラメーターを使ってそれを実行することもできます。
ConsoleOutput 省略可能な ITaskItem[] 型の出力パラメーターです。

各項目出力は、ツールによって生成される標準出力または標準エラー ストリームの行です。 これは、ConsoleToMsBuildtrue に設定されている場合にのみキャプチャされます。
ConsoleToMsBuild 省略可能な Boolean 型のパラメーターです。

true の場合、タスクは、ツールの標準エラーと標準出力をキャプチャして、ConsoleOutput 出力パラメーターで利用できるようにします。

既定値:false
CustomErrorRegularExpression 省略可能な String 型のパラメーターです。

ツールの出力でエラー行を示すために使う正規表現を指定します。 これは、普通とは異なる書式設定の出力を生成するツールに便利です。

既定値: null (カスタム処理はありません)。
CustomWarningRegularExpression 省略可能な String 型のパラメーターです。

ツールの出力で警告行を示すために使う正規表現を指定します。 これは、普通とは異なる書式設定の出力を生成するツールに便利です。

既定値: null (カスタム処理はありません)。
EchoOff 省略可能な Boolean 型のパラメーターです。

true の場合、タスクは Command の拡張形式を MSBuild ログに出力しません。

既定値:false
ExitCode 省略可能な Int32 型の読み取り専用出力パラメーターです。

実行したコマンドから返される終了コードを指定します。ただし、タスクによってエラーが記録され、プロセスの終了コードが 0 (成功) の場合、ExitCode は -1 に設定されます。
IgnoreExitCode 省略可能な Boolean 型のパラメーターです。

true の場合、タスクは実行したコマンドで提供されている終了コードを無視します。 それ以外の場合、実行されたコマンドが 0 以外の終了コードを返すときは、タスクは false を返します。

既定値:false
IgnoreStandardErrorWarningFormat 省略可能な Boolean 型のパラメーターです。

false の場合は、標準エラー/警告の形式に一致する出力行を選び、エラー/警告としてログに記録します。 true の場合は、この動作は無効になります。

既定値:false
Outputs 省略可能な ITaskItem[] 型の出力パラメーターです。

タスクからの出力項目を含みます。 Exec タスク自体はこれらを設定しません。 代わりに、タスクが設定したかのようにユーザーが提供して、プロジェクトの後の処理で使うことができます。
StdErrEncoding 省略可能な String 型の出力パラメーターです。

キャプチャしたタスクの標準エラー ストリームのエンコーディングを指定します。 既定値は、現在のコンソール出力のエンコーディングです。
StdOutEncoding 省略可能な String 型の出力パラメーターです。

キャプチャしたタスクの標準出力ストリームのエンコーディングを指定します。 既定値は、現在のコンソール出力のエンコーディングです。
UseUtf8Encoding 省略可能な String 型のパラメーターです。

実行されるコマンドのコマンド行を処理するとき、UTF8 コード ページを使用するかどうかを指定します。 有効な値は、AlwaysNever、または Detect です。 既定値は Detect です。これは、ANSI 以外の文字が存在する場合にのみ UTF8 コード ページを使用することを意味します。
WorkingDirectory 省略可能な String 型のパラメーターです。

コマンドを実行するディレクトリを指定します。

既定:プロジェクトの現在の作業ディレクトリ。

ToolTaskExtension パラメーター

このタスクが ToolTaskExtension クラスを継承します。このクラスは ToolTask クラスから継承され、さらに、このクラス自体は Task から継承されます。 この継承チェーンにより、これらのクラスから派生したタスクにいくつかのパラメーターが追加されます。

基本クラスのパラメーターの説明を次の表に示します。

パラメーター 説明
EchoOff 省略可能な bool 型のパラメーターです。

true に設定すると、このタスクは /Qcmd.exe コマンド ラインに渡して、コマンド ラインが stdout にコピーされないようにします。
EnvironmentVariables 省略可能な String 型の配列パラメーターです。

セミコロンで区切られた環境変数定義の配列。 各定義では、環境変数の名前と値を等号で区切って指定する必要があります。 これらの変数は、標準の環境ブロックに加え (または標準の環境ブロックを選択的にオーバーライドして)、子の実行可能ファイルに渡されます。 たとえば、「 Variable1=Value1;Variable2=Value2 」のように入力します。
ExitCode 省略可能な Int32 型の読み取り専用出力パラメーターです。

実行したコマンドの終了コードを示します。 タスクがエラーを記録した一方で、プロセスの終了コードが 0 (成功) だった場合、これは -1 に設定されます。
LogStandardErrorAsError 省略可能な bool 型のパラメーターです。

true の場合、標準エラー ストリームで受け取ったすべてのメッセージがエラーとして記録されます。
StandardErrorImportance 省略可能な String 型のパラメーターです。

標準エラー ストリームのテキストを記録するときに使用する重要度です。
StandardOutputImportance 省略可能な String 型のパラメーターです。

標準出力ストリームのテキストを記録するときに使用する重要度です。
Timeout 省略可能な Int32 型のパラメーターです。

タスク実行を終了するまでの時間をミリ秒単位で指定します。 既定値は Int.MaxValue であり、タイムアウト期限がないことを示します。 タイムアウトはミリ秒単位です。
ToolExe 省略可能な string 型のパラメーターです。

プロジェクトで実装すると、ToolName をオーバーライドできます。 タスクでオーバーライドすると、ToolName を保持できます。
ToolPath 省略可能な string 型のパラメーターです。

タスクで基になる実行可能ファイルを読み込む場所を指定します。 このパラメーターを指定しない場合、タスクでは、MSBuild を実行しているフレームワークのバージョンに対応する SDK インストール パスが使用されます。
UseCommandProcessor 省略可能な bool 型のパラメーターです。

true に設定した場合、このタスクで直接コマンドを実行する代わりに、コマンド ラインのバッチ ファイルを作成し、そのファイルをコマンド プロセッサで実行します。
YieldDuringToolExecution 省略可能な bool 型のパラメーターです。

true に設定した場合、このタスクは、その実行時にノードを生成します。

Remarks

このタスクは、実行したいジョブの特定の MSBuild タスクを使用できないときに便利です。 ただし、Exec タスクは、固有のタスクとは異なり、実行したツールまたはコマンドの結果に基づいて追加処理や条件演算を行うことはできません。

プロセスを直接呼び出す代わりに、Exec タスクは Windows では cmd.exe を呼び出し、それ以外の場合は sh を呼び出します。

パラメーター IgnoreExitCodeIgnoreStandardErrorWarningFormat を指定すると、タスクによって false が返される条件が影響を受け、エラーが示されます。 実行可能ファイルの終了コードがゼロ以外の場合、または診断メッセージが実行可能ファイルの標準エラー ストリームに見つかった場合、既定の設定 (両方が false) では、Exec タスクによってエラーが示されます (false が返されます)。 実行可能ファイルによってゼロ以外の終了コードが返された場合にのみ Exec でエラーを示すには、IgnoreStandardErrorWarningFormattrue に設定します。

次の例では、Exec タスクを使ってコマンドを実行します。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Binaries Include="*.dll;*.exe"/>
    </ItemGroup>

    <Target Name="SetACL">
        <!-- set security on binaries-->
        <Exec Command="echo y| cacls %(Binaries.Identity) /G everyone:R"/>
    </Target>
</Project>

関連項目