Wie kann ich meine Post-Build-Ereignisse darauf beschränken, nur für einen Build-Typ ausgeführt zu werden?
Ich verwende die Ereignisse, um DLL-Dateien in ein lokales virtuelles IIS-Verzeichnis zu kopieren, möchte jedoch nicht, dass dies im Release-Modus auf dem Build-Server geschieht.
Zu Ihrer Information, Sie müssen goto nicht verwenden. Der Shell- IF- Befehl kann mit runden Klammern verwendet werden:
quelle
"$(ConfigurationName)"
(beachten Sie die Anführungszeichen), wenn Sie Fehlercode 255$(ConfigurationName)
leer (Befehlszeile für Ereignisse nach dem Erstellen).if "$(Configuration)" == "Debug"
arbeitete für mich. Übrigens, wenn Sie in allen anderen Konfigurationen etwas tun möchten, verwenden Sieif NOT "$(Configuration)" == "Debug"
.Fügen Sie Ihr Post-Build-Ereignis wie gewohnt hinzu. Speichern Sie dann Ihr Projekt, öffnen Sie es im Editor (oder in Ihrem bevorzugten Editor) und fügen Sie der Eigenschaftsgruppe PostBuildEvent eine Bedingung hinzu. Hier ist ein Beispiel:
quelle
cd "$(ProjectDir)"
erweitert aufcd ""
.<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
. Makrovariablen und alles funktionieren wie gewohnt.Verwenden Sie alternativ (da die Ereignisse in eine Batchdatei eingefügt und dann aufgerufen werden) Folgendes (im Feld Build-Ereignis, nicht in einer Batchdatei):
Auf diese Weise können Sie Ereignisse für jede Konfiguration haben und diese dennoch mit den Makros verwalten, anstatt sie an eine Batchdatei übergeben zu müssen. Denken Sie daran, dass dies der Fall
%1
ist$(OutputPath)
usw.quelle
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
und verwendengoto :$(ConfigurationName)
Visual Studio 2015: Die korrekte Syntax lautet (halten Sie sie in einer Zeile):
Kein Fehler 255 hier.
quelle
Ab Visual Studio 2019 unterstützt das moderne
.csproj
Format das Hinzufügen einer Bedingung direkt zumTarget
Element:Die Benutzeroberfläche bietet keine Möglichkeit, dies einzurichten, aber es scheint, dass das
Configuration
Attribut sicher an Ort und Stelle bleibt, wenn Sie Änderungen über die Benutzeroberfläche vornehmen.quelle
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 darauf, wie Sie den Post-Build-Schritt implementieren. Dies ist ein Befehlszeilenargument.
quelle
Dies funktioniert bei mir in Visual Studio 2015.
Ich kopiere alle DLL-Dateien aus einem Ordner in einem Bibliotheksordner auf derselben Ebene wie mein Lösungsordner in das Zielverzeichnis des zu erstellenden Projekts.
Verwenden eines relativen Pfads aus meinem Projektverzeichnis und Aufrufen der Ordnerstruktur in zwei Schritten mit .. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
quelle
Wie bei jeder Projekteinstellung können die Buildevents pro Konfiguration konfiguriert werden. Wählen Sie einfach die Konfiguration, die Sie ändern möchten, in der Dropdown-Liste des Dialogfelds "Eigenschaftenseiten" aus und bearbeiten Sie den Schritt nach dem Erstellen.
quelle
In Visual Studio 2012 müssen Sie verwenden (ich denke auch in Visual Studio 2010)
$(ConfigurationName)
wurde als Makro aufgeführt, aber nicht zugewiesen.Vergleichen Sie: Makros für Build-Befehle und -Eigenschaften
quelle