コマンドを使用するC++Visual Studio 2010プロジェクトにビルド後のイベントがありますxcopy
が、このxcopyがエラーコード(> 0)を返すと、すべてのビルドも失敗し、「ビルドに失敗しました」というメッセージが表示されます。イベントを作成しますか?
ありがとう!
コマンドを使用するC++Visual Studio 2010プロジェクトにビルド後のイベントがありますxcopy
が、このxcopyがエラーコード(> 0)を返すと、すべてのビルドも失敗し、「ビルドに失敗しました」というメッセージが表示されます。イベントを作成しますか?
ありがとう!
Exec
タスクのIgnoreExitCode
次を使用できます。
<Target Name="MyAwesomePostBuildTarget" AfterTargets="Build">
<Exec IgnoreExitCode="true" Command="xcopy etc. etc." />
</Target>
|| exit /b 0
コマンドの最後に追加することで、(ほぼ)すべてのバッチCMDの失敗結果をオーバーライドできます。例:
del somefile.txt || exit /b 0
このように、バッチファイルはCのように機能します。前のコマンドが成功したときに、条件付きでコマンドを実行するために&&を実行できます。|| 前のコマンドが失敗したときにコマンドを実行します。
exit /b 0
スクリプトを終了し、エラーレベルをゼロ(0)に設定するようにCMDプロセッサに指示します。/ bスイッチを含めることを忘れないでください!これがないと、CMDは呼び出し元のスクリプトと現在のスクリプトを終了しますが、これが望ましい動作になることはめったにありません。
Visual Studio IDEからこのトリックを使用しているので、低レベルのプロジェクトハッキングを行う必要はありません。また、1行に収まるので、IDEからも便利です。
ちなみに、もう1つの便利なトリックは、コマンドをサイレンシングすることです。
xcopy srcfile destfile 1>nul 2>nul || exit /b 0
1
stdoutであり、2
stderrです。シェルプログラムのWindowsスイートは、使用する可能性のある出力に関して一貫性がないことで有名です。そのため、私は通常、両方をパイプするか、どちらもパイプしません。