質問

ビルド後にバッチファイルを実行してたくさんのファイルを移動しようとしているので、次のような建物後のイベントを作成しました。

$(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 バッチファイルを呼び出す機能!!!。

すべてのパラメーターをメインバッチファイルに渡し、内部のものを処理します。呼び出される他のバッチまたはバッチのセットがある場合は、ポストビルドイベントでそれらを呼び出しないでください。メインバッチファイルから他のバッチファイルを呼び出してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top