VS2008ビルド後のイベントバッチファイル
-
30-09-2019 - |
質問
ビルド後にバッチファイルを実行してたくさんのファイルを移動しようとしているので、次のような建物後のイベントを作成しました。
$(ProjectDir)CopyPlugins.bat $(ConfigurationName)
問題は、Visual Studioがイベントを実行しようとすると、プロセスのエラーが発生したことです。 exited with code 9009
問題は、VSが実行するコマンドが次のように引用符を引いているということです。
"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat Debug"
もちろん、私がやろうとしていたのは、非常に微妙なバリエーションであり、クロージング引用マークの位置を変更しました。
"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat" Debug
VSが提供するこのかなり迷惑な「ヘルプ」の周りにはありますか?
解決
異なる引数で最初のものを実行するだけの2つのバッチファイルを作成します。
copyplugins-debug.bat
Call CopyPlugins.bat debug
copyplugins-release.bat
Call CopyPlugins.bat release
ビルド後のイベントで
"$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"
他のヒント
複雑な建設後のコピーをやろうとしている場合、それを見る価値があるかもしれません MSBUILDコミュニティタスク 事業。それは、あなたのタスクを達成するためのよりクリーンな方法であるかもしれないrobocopy.exeをラップするタスクを持っています。
一般的に、私は空であり、ビルド前のステップを実行する以外に何もしない個別の「ビルド」プロジェクトを作成します。それは非常にうまく機能します。
バッチスクリプトへのパスの周りに引用符が必要だと思います。つまり、建物後のイベントは次のとおりです。
"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)
これは、パスにスペースがあるディレクトリにあるC#プロジェクトのために私のために機能しました。
このように入力するだけです
d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"
これは私のために働いた。使用しないでください CALL
バッチファイルを呼び出す機能!!!。
すべてのパラメーターをメインバッチファイルに渡し、内部のものを処理します。呼び出される他のバッチまたはバッチのセットがある場合は、ポストビルドイベントでそれらを呼び出しないでください。メインバッチファイルから他のバッチファイルを呼び出してください。