私はmanaging configuration with PreBuild EventsのScott Hanselmanのブログ記事をたどり、うまく働いています。Visual Studioで複数のビルド前のイベント?
私は構成をいくつかの異なるファイルに分割したいので、ビルドの前に再度コマンドを実行する必要があります。問題はPreBuildイベントのテキストがすべて1つのコンソールコマンドとして実行されることです。どうやっていくつかのコマンドとして分割できますか?
私はmanaging configuration with PreBuild EventsのScott Hanselmanのブログ記事をたどり、うまく働いています。Visual Studioで複数のビルド前のイベント?
私は構成をいくつかの異なるファイルに分割したいので、ビルドの前に再度コマンドを実行する必要があります。問題はPreBuildイベントのテキストがすべて1つのコンソールコマンドとして実行されることです。どうやっていくつかのコマンドとして分割できますか?
はスコットの例では、call
コマンドが含まれていないという問題点が判明batch1.batとbatch2.batの両方を実行しますラインの始めに。異なるパラメータで.bat
ファイルを複数回実行しない限り、これは問題ありません。
この:
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)connectionStrings.config.$(ConfigurationName)" "$(ProjectDir)connectionStrings.config"
call "$(ProjectDir)copyifnewer.bat" "$(ProjectDir)appSettings.config.$(ConfigurationName)" "$(ProjectDir)appSettings.config"
は私のためにうまく働きました。
コマンドを別々の行に置くことができます。次に、各コマンドが順番に実行されます。または、次のように同じことを行うには「詐欺師」の方法は次のとおりです。
これらは別々の行にありますが、1つとして実行されているようです。私はバットファイルのアプローチを考えているが、解決策ではなく回避策のように思える。 – Kirschstein
奇妙な。私はセミコロンをセパレータとして追加するなど、他の提案もしていますが、わたしはストローを掴んでいます。ごめんなさい! – MBillock
Windows 7の64ビット版Visual Studio 2010を使用しています。
私は自分の好みに合わせて良いでしょう解決策を見つけた、私は、例えば、&& ^
と一緒にコマンドを連鎖ので、同じように私.vcxprojのxmlファイルを編集しています:
<PreBuildEvent>
<Command>echo "hello 1" &&^
echo "hello 2" &&^
echo "hello 3"</Command>
<Message>Performaing pre-build actions ...</Message>
</PreBuildEvent>
私は一緒に3つのコマンドを連鎖してきました。 '& &'は、前のコマンドのエラーが発生した場合にシェルが実行を停止するように指示します。
注:.xmlファイルでは、は、直接&&
を使用できないため、'& amp; & amp; '代わりにを使用する必要があります。また、^
文字の使用に注意してください。これは、cmdシェルの行継続文字(BASHの\
charなど)です。
各新しいコマンドは、行の先頭から開始する必要があります。この方法を使用すると、1つのコマンドを多数のチェーンにまとめることができますが、いずれかが失敗した場合、チェーンの残りの部分は実行されません。
は、ここに私の実際のユースケースは、私は別のサブプロジェクトのディレクトリに私のプリコンパイルされたヘッダのデバッグファイルをコピーして、その後、Pythonスクリプトで、いくつかの環境チェックを実行しています:
<PreBuildEvent>
<Command>C:\Python27\python.exe "$(SolutionDir)check_path.py" 32 &&^
copy "$(SolutionDir)h1ksim_lib\vc$(PlatformToolsetVersion).pdb" "$(IntDir)" /-Y > nul</Command>
<Message>Performaing pre-build actions ...</Message>
</PreBuildEvent>
に> nul
使い方
0 file(s) copied.
リファレンスがここにあると言うとき、私のチームメイトがびびる取得することはできませんので、コピーコマンドは、ビルドウィンドウに現れて任意の出力を防止します3210
Sharing precompiled headers between projects in Visual Studio
VS2008では、複数のCMDファイルを別々の行に入れても機能しませんでした。 VSはビルド時に最初のスクリプトのみを呼び出しました。私は各行の前にCALLを追加し、それがすべて働いた。 –
なぜこれらの 'call'コマンドを聞くのですか? [ここ](https://msdn.microsoft.com/en-us/library/ms165412.aspx)を参照してください。 – Pascal