3

コマンドを使用するC++Visual Studio 2010プロジェクトにビルド後のイベントがありますxcopyが、このxcopyがエラーコード(> 0)を返すと、すべてのビルドも失敗し、「ビルドに失敗しました」というメッセージが表示されます。イベントを作成しますか?

ありがとう!

4

2 に答える 2

6

ExecタスクのIgnoreExitCode次を使用できます。

<Target Name="MyAwesomePostBuildTarget" AfterTargets="Build">
  <Exec IgnoreExitCode="true" Command="xcopy etc. etc." />
</Target>
于 2013-01-21T18:50:31.047 に答える
1

|| 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

1stdoutであり、2stderrです。シェルプログラムのWindowsスイートは、使用する可能性のある出力に関して一貫性がないことで有名です。そのため、私は通常、両方をパイプするか、どちらもパイプしません。

于 2013-01-21T19:16:34.377 に答える