回答:
ビルド前およびビルド後のイベントは、バッチスクリプトとして実行されます。で条件付きステートメントを実行できます$(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".
)
"$(ConfigurationName)"
(予告引用符)を使用すると、エラーコード255取得する場合
$(ConfigurationName)
は空です(ビルド後のイベントコマンドライン)。if "$(Configuration)" == "Debug"
私のために働いた。ところで、他のすべての設定で何かしたい場合は、を使用してくださいif NOT "$(Configuration)" == "Debug"
。
通常のように、ビルド後のイベントを追加します。次に、プロジェクトを保存し、メモ帳(またはお気に入りのエディター)で開いて、PostBuildEventプロパティグループに条件を追加します。次に例を示します。
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
cd "$(ProjectDir)"
に拡張されましたcd ""
。
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
。マクロ変数とすべてが通常どおり機能します。
または(イベントがバッチファイルに入れられて呼び出されるため)、次を使用します(バッチファイルではなく、[ビルドイベント]ボックスで)。
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
' Debug items in here
:exit
この方法で、あなたはどのような構成のためのイベントがあり、まだかなりバッチファイルにそれらを渡すために持つよりも、マクロでそれを管理する、ことを覚えておくことができ%1
ている$(OutputPath)
など、
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
て使用できますgoto :$(ConfigurationName)
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はありません。
Visual Studio 2019以降、最新の.csproj
形式では、Target
要素に直接条件を追加できます。
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="nswag run nswag.json" />
</Target>
UIはこれを設定する方法を提供していませんがConfiguration
、UIを介して変更を行った場合、属性をそのままにしておくように見えます。
これはVisual Studio 2015で私にとっては機能します。
すべてのDLLファイルを、ソリューションフォルダーと同じレベルのライブラリフォルダーにあるフォルダーから、ビルド中のプロジェクトのターゲットディレクトリにコピーします。
プロジェクトディレクトリからの相対パスを使用し、.. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE (echo "Not Debug mode, no file copy from lib")
他のプロジェクト設定と同様に、ビルドイベントは構成ごとに構成できます。[プロパティページ]ダイアログのドロップダウンで変更する構成を選択し、ビルド後の手順を編集するだけです。
Visual Studio 2012では、使用する必要があります(Visual Studio 2010でも使用すると思います)
if $(Configuration) == Debug xcopy
$(ConfigurationName)
マクロとしてリストされましたが、割り当てられていません。