657 Stimmen

So führen Sie Visual Studio Post-Build-Ereignisse nur für Debug-Build aus

Wie kann ich meine Post-Build-Ereignisse darauf beschränken, dass sie nur für eine bestimmte Art von Build ausgeführt werden?

Ich verwende die Ereignisse, um DLL-Dateien in ein lokales virtuelles IIS-Verzeichnis zu kopieren, aber ich möchte nicht, dass dies auf dem Build-Server im Release-Modus geschieht.

831voto

Joseph Daigle Punkte 46087

Pre- und Post-Build Events werden als Batch-Skript ausgeführt. Sie können eine bedingte Anweisung auf $(ConfigurationName) .

Zum Beispiel

if $(ConfigurationName) == Debug xcopy something somewhere

572voto

gbjbaanb Punkte 50303

Zu Ihrer Information: Sie brauchen goto nicht zu verwenden. Die Shell IF 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".
)

139voto

Franci Penov Punkte 73239

Fügen Sie Ihr Post-Build-Ereignis wie gewohnt hinzu. Dann speichern Sie Ihr Projekt, öffnen es in Notizblock (oder Ihrem bevorzugten Editor), und fügen Sie der Eigenschaftsgruppe PostBuildEvent eine Bedingung hinzu. Hier ist ein Beispiel:

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

111voto

CestLaGalere Punkte 2859

Alternativ (da die Ereignisse in eine Stapeldatei eingegeben und dann aufgerufen werden) können Sie auch Folgendes verwenden (im Feld "Ereignis erstellen", nicht in einer Stapeldatei):

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 beliebige Konfiguration haben und sie trotzdem mit den Makros verwalten, anstatt sie in eine Batch-Datei zu übergeben. %1 es $(OutputPath) , usw.

50voto

Daniel Earwicker Punkte 111630

Ab Visual Studio 2019 wird die moderne .csproj Format unterstützt das Hinzufügen einer Bedingung direkt in der Target Element:

<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)' == 'Debug'">
    <Exec Command="nswag run nswag.json" />
</Target>

Die Benutzeroberfläche bietet keine Möglichkeit, dies einzurichten, aber es scheint die Configuration Attribut, wenn Sie Änderungen über die Benutzeroberfläche vornehmen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X