2

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

$(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が提供するこのかなり厄介な「ヘルプ」を回避する方法はありますか?

4

4 に答える 4

6

最初のバッチ ファイルを異なる引数で実行するだけのバッチ ファイルをさらに 2 つ作成します。

CopyPlugins-debug.bat Call CopyPlugins.bat debug

CopyPlugins-release.bat Call CopyPlugins.bat release

そしてVSポストビルドイベントで "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"

于 2010-08-22T06:27:25.233 に答える
0

複雑なビルド後のコピーを実行しようとしている場合は、MSBuild Community Tasksプロジェクトを検討する価値があるかもしれません。RoboCopy.exe をラップするタスクがあります。これは、タスクを達成するためのよりクリーンな方法である可能性があります。

通常、空の「ビルド」プロジェクトを個別に作成し、ビルド前/後のステップを実行するだけです。それは非常にうまく機能します。

于 2010-08-22T06:01:39.517 に答える
0

バッチスクリプトへのパスを引用符で囲むだけでよいと思います。つまり、ビルド後のイベントは次のようになります。

"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)

これは、パスにスペースがあるディレクトリにあるC#プロジェクトでうまくいきました。

于 2010-08-22T06:17:23.280 に答える
0

このように入力するだけです

d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"

これは私にとってはうまくいきました。関数を使用CALLしてバッチ ファイルを呼び出さないでください!!!.

すべてのパラメーターをメイン バッチ ファイルに渡し、内部で処理を行います。他のバッチまたは一連のバッチを呼び出す場合は、ビルド後のイベントでそれらを呼び出さず、メインのバッチ ファイルから他のバッチ ファイルを呼び出すだけです。

于 2012-08-29T11:22:59.793 に答える