Visual Studioでビルド時に[ビルド前のイベント]にコマンドを設定している場合、コマンドを成功させないとビルドが開始されません。コマンドが失敗してもビルドを継続するための対処法を備忘録的に投稿します。
ファイルがアクセス中のエラー
Visual Studioのビルド時に、[warning MSB3026: “apphost.exe” を “AppName.exe” にコピーできませんでした。別のプロセスで使用されているため、プロセスはファイル ‘AppName.exe’ にアクセスできません。 このファイルは “AppName (66900), AppName (58036)” によってロックされています。]エラーが表示される場合があります。
この場合には[ビルド前のイベント]に実行中のファイルを強制終了するコマンドを追加して、ビルド前に対処する方法があります。詳しい手順は、別記事をご覧ください。
ビルド前のイベントでエラータスク終了
毎回、ビルド時に対象ファイルが実行されている場合は問題になりません。
しかし、ビルド時にファイルが実行されていない場合には[ビルド前のイベント]が失敗してしまうため、ビルドが続行されません。
[ビルド前のイベント]に設定したコマンドが失敗しても、成功してもビルドを継続するには設定したコマンドを工夫して回避できます。
例えば、こんな感じで強制的に終了コードを “0” にすることでビルドを続行できます。
taskkill /IM AppName.exe /F
exit 0
設定すると、ビルド時にコマンドが実行されて終了していないプロセスがタスクに残っている場合に強制的に終了させてからビルドが続行されます。
また、プロセスがタスクに無い場合にはコマンドはエラーで終了しますが、終了コードを “0” にするコマンドが実行されるので、ビルドが開始されます。
そのため[ビルド前のイベント]のコマンドが成功、失敗に関わらずビルドが続行されます。
まとめ
短い記事になりましたが、Visual Studioでビルド時に[ビルド前のイベント]にコマンドを設定している場合、コマンドを成功させないとビルドが開始されません。コマンドが失敗してもビルドを継続するための対処法について書きました。
[ビルド前のイベント]は成功する必要があります。
そのため失敗してもビルドを続行したい場合には “exit 0” などの強制的に終了コードを送るコマンドの追加します。
Visual Studioで[ビルド前のイベント]に設定したコマンドが失敗してビルドが続行されない人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。

