visual-studio - configurations - visual studio release erstellen




Wie Ausführen von Visual Studio-Post-Build-Ereignissen nur für Debug-Erstellung (6)

Alternativ (da die Ereignisse in eine Batch-Datei eingefügt und dann aufgerufen werden), verwenden Sie Folgendes. (im Feld Build-Ereignis, nicht in einer Batch-Datei):

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 zu übergeben. Beachten Sie, dass% 1 $ (OutputPath) usw. ist:

Wie kann ich meine Post-Build-Ereignisse so beschränken, dass sie nur für einen Buildtyp ausgeführt werden? Ich verwende die Ereignisse, um DLLs in ein lokales virtuelles IIS-Verzeichnis zu kopieren, aber ich möchte nicht, dass dies auf dem Build-Server im Freigabemodus geschieht.


Das funktioniert für mich in Visual Studio 2015.
Ich kopiere alle DLL-Dateien aus einem Ordner in einem lib-Ordner auf der gleichen Ebene wie mein Lösungsordner in das Zielverzeichnis des zu erstellenden Projekts.
Verwenden Sie einen relativen Pfad von meinem Projektverzeichnis und gehen Sie die Ordnerstruktur zwei Schritte mit .. \ .. \ lib

MySolutionFolder
....Mein Projekt
Lib

if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE  (echo "Not Debug mode, no file copy from lib")


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

Übergeben Sie den Konfigurationsnamen mit $ (ConfigurationName)

Die Überprüfung basiert darauf, wie Sie den Post-Build-Schritt implementieren - es wird ein Befehlszeilenargument sein


Wie bei jeder Projekteinstellung können die buildevents pro Konfiguration konfiguriert werden. Wählen Sie einfach die Konfiguration, die Sie ändern möchten, im Dropdown-Menü des Eigenschaftsseiten-Dialogfelds aus, und bearbeiten Sie den Post-Build-Schritt


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




build-process