it-swarm.com.de

Ausführen von Visual Studio-Postbuild-Ereignissen nur für die Debug-Erstellung

Wie kann ich meine Postbuild-Ereignisse auf die Ausführung nur für einen Build-Typ beschränken? Ich benutze die Ereignisse, um DLLs in ein lokales IIS= virtuelles Verzeichnis zu kopieren, aber ich möchte nicht, dass dies auf dem Build-Server im Release-Modus geschieht.

565
JC.

Pre- und Post-Build-Ereignisse werden als Batch-Skript ausgeführt. Sie können eine bedingte Anweisung für $(ConfigurationName) ausführen.

Zum Beispiel

if $(ConfigurationName) == Debug xcopy something somewhere
708
Joseph Daigle

Zu Ihrer Information, Sie müssen goto nicht verwenden. Der Shell IF-Befehl kann mit runden Klammern verwendet werden:

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".
)
500
gbjbaanb

Fügen Sie Ihr Postbuild-Ereignis wie gewohnt hinzu. Speichern Sie dann Ihr Projekt, öffnen Sie es in Notepad (oder Ihrem bevorzugten Editor) und fügen Sie der PostBuildEvent-Eigenschaftsgruppe eine Bedingung hinzu. Hier ist ein Beispiel:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
121
Franci Penov

alternativ (da die Ereignisse in eine Batch-Datei geschrieben und dann aufgerufen werden), verwenden Sie Folgendes. (im Feld Ereignis erstellen, nicht in einer Batchdatei):

if $(ConfigurationName) == Debug goto :debug

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

goto :exit

:debug
' debug items in here

:exit

Auf diese Weise können Sie Ereignisse für jede Konfiguration haben und sie trotzdem mit den Makros verwalten, anstatt sie in eine Batch-Datei übergeben zu müssen. Beachten Sie, dass% 1 $ (OutputPath) usw. ist:

104
CestLaGalere

Visual Studio 2015: Die korrekte Syntax lautet (lassen Sie es in einer Zeile):

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

Kein Fehler 255 hier.

12

Sie können den Konfigurationsnamen an das Post-Build-Skript übergeben und dort einchecken, um festzustellen, ob es ausgeführt werden soll.

Übergeben Sie den Konfigurationsnamen mit $ (ConfigurationName)

Die Überprüfung basiert auf der Implementierung des Post-Build-Schritts. Dies ist ein Befehlszeilenargument

4
Lou Franco