ビルド後のイベントを 1 つのタイプのビルドに対してのみ実行するように制限するにはどうすればよいですか?
イベントを使用して DLL ファイルをローカルの IIS 仮想ディレクトリにコピーしていますが、リリース モードのビルド サーバーでこれを実行したくありません。
ビルド後のイベントを 1 つのタイプのビルドに対してのみ実行するように制限するにはどうすればよいですか?
イベントを使用して DLL ファイルをローカルの IIS 仮想ディレクトリにコピーしていますが、リリース モードのビルド サーバーでこれを実行したくありません。
ビルド前およびビルド後のイベントは、バッチ スクリプトとして実行されます。で条件文を実行できます$(ConfigurationName)
。
例えば
if $(ConfigurationName) == Debug xcopy something somewhere
参考までに、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".
)
通常どおりビルド後のイベントを追加します。次に、プロジェクトを保存し、メモ帳(またはお気に入りのエディター) で開き、PostBuildEvent プロパティ グループに条件を追加します。次に例を示します。
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
または(イベントがバッチファイルに入れられてから呼び出されるため)、次を使用します(バッチファイルではなく、[ビルドイベント]ボックスで)。
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
' Debug items in here
:exit
%1
このようにして、任意の構成のイベントを作成し、それらをバッチファイルに渡すのではなく、マクロを使用して管理することができます$(OutputPath)
。
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 はありません。
構成名をビルド後のスクリプトに渡し、そこにチェックインして、実行する必要があるかどうかを確認できます。
で構成名を渡します$(ConfigurationName)
。
それをチェックすることは、ビルド後のステップをどのように実装しているかに基づいています。これはコマンドライン引数になります。
Visual Studio 2012 では、使用する必要があります (Visual Studio 2010 でも使用すると思います)。
if $(Configuration) == Debug xcopy
$(ConfigurationName)
マクロとしてリストされていましたが、割り当てられていませんでした。
他のプロジェクト設定と同様に、buildevents は構成ごとに構成できます。[プロパティ ページ] ダイアログのドロップダウンで変更する構成を選択し、ビルド後のステップを編集するだけです。