web-dev-qa-db-ja.com

VS2010:ビルド後のイベントの場合、複数にすることはできますか?

次のようなものはありますか?

if "Debug"=="$(ConfigurationName)"
(
  goto :nocopy
)
else if "Release"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config"
)
else if "ReleaseBeta"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.ReleaseBeta.config" "$(TargetPath).config"
)
else if "ReleaseProduction"=="$(ConfigurationName)"
(
  del "$(TargetPath).config"
  copy "$(ProjectDir)\App.ReleaseProduction.config" "$(TargetPath).config"
)
    :nocopy

試してみましたが、うまくいきません。エラーコードは255です。

20
tesicg

必要な数の条件ステートメントを含めることができます。それらを新しい行で区切るだけで、他を失うことになります。

だから変更

if "Debug"=="$(ConfigurationName)"
(
  goto :nocopy
)
else if...

if "Debug" == "$(ConfigurationName)" (goto :nocopy)
if "Release" ==" $(ConfigurationName)" (
    del "$(TargetPath).config"
    copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config" )
if ...

コンパイルして問題なく実行します

注:コマンドはDOSバッチファイルと同じように行ごとに解釈されるため、開始括弧「(」をifステートメントと同じ行に置き、閉じ括弧「)」をブロックの最後のコマンドと同じ行。

31
Davor Zlotrg

ビルド後のロジックが複雑になった場合は、外部ファイルに移動することをお勧めします。たとえば、次のビルド後のイベント:

CALL "$(ProjectDir)PostBuild.cmd" $(ConfigurationName)

$(ConfigurationName)をパラメーターとして渡して、プロジェクトディレクトリでバッチファイルPostBuild.cmdを実行します。 $(TargetPath)などの他のパラメーターを渡すこともできます。

その後、複数のifステートメントを含め、必要なものを実装できます。さらに重要なのは、Visual Studioビルドを実行せずにデバッグすることです。

5
Joe