642

ビルド後のイベントを 1 つのタイプのビルドに対してのみ実行するように制限するにはどうすればよいですか?

イベントを使用して DLL ファイルをローカルの IIS 仮想ディレクトリにコピーしていますが、リリース モードのビルド サーバーでこれを実行したくありません。

4

11 に答える 11

810

ビルド前およびビルド後のイベントは、バッチ スクリプトとして実行されます。で条件文を実行できます$(ConfigurationName)

例えば

if $(ConfigurationName) == Debug xcopy something somewhere
于 2008-09-29T18:48:19.120 に答える
551

参考までに、goto を使用する必要はありません。シェルのIFコマンドは、丸かっこで使用できます。

if $(ConfigurationName) == Debug (
  copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
  copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
  echo "why, Microsoft, why".
)
于 2010-08-23T13:06:16.457 に答える
136

通常どおりビルド後のイベントを追加します。次に、プロジェクトを保存し、メモ帳(またはお気に入りのエディター) で開き、PostBuildEvent プロパティ グループに条件を追加します。次に例を示します。

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
于 2008-09-29T18:47:13.520 に答える
109

または(イベントがバッチファイルに入れられてから呼び出されるため)、次を使用します(バッチファイルではなく、[ビルドイベント]ボックスで)。

if $(ConfigurationName) == Debug goto :debug

:release
signtool.exe ....
xcopy ...

goto :exit

:debug
' Debug items in here

:exit

%1このようにして、任意の構成のイベントを作成し、それらをバッチファイルに渡すのではなく、マクロを使用して管理することができます$(OutputPath)

于 2009-07-24T09:56:39.767 に答える
17

Visual Studio 2015: 正しい構文は次のとおりです (1 行にまとめてください)。

if "$(ConfigurationName)"=="My Debug CFG" ( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y) else ( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)

ここにはエラー 255 はありません。

于 2016-02-22T13:21:27.410 に答える
5

構成名をビルド後のスクリプトに渡し、そこにチェックインして、実行する必要があるかどうかを確認できます。

で構成名を渡します$(ConfigurationName)

それをチェックすることは、ビルド後のステップをどのように実装しているかに基づいています。これはコマンドライン引数になります。

于 2008-09-29T18:44:05.010 に答える
-3

Visual Studio 2012 では、使用する必要があります (Visual Studio 2010 でも使用すると思います)。

if $(Configuration) == Debug xcopy

$(ConfigurationName)マクロとしてリストされていましたが、割り当てられていませんでした。

ここに画像の説明を入力してください

比較:ビルド コマンドとプロパティのマクロ

于 2012-12-14T07:46:20.463 に答える
-3

他のプロジェクト設定と同様に、buildevents は構成ごとに構成できます。[プロパティ ページ] ダイアログのドロップダウンで変更する構成を選択し、ビルド後のステップを編集するだけです。

于 2008-09-29T18:48:43.767 に答える