Jak uruchamiać zdarzenia post-build w programie Visual Studio tylko dla debug build

Jak mogę ograniczyć moje zdarzenia post-build do uruchamiania tylko dla jednego typu build? Używam zdarzeń do kopiowania bibliotek DLL do lokalnego wirtualnego katalogu IIS, ale nie chcę, aby działo się to na serwerze kompilacji w trybie release.

Author: JC., 2008-09-29

9 answers

Zdarzenia Pre - I Post-Build działają jako skrypt wsadowy. Możesz wykonać instrukcję warunkową na $(ConfigurationName).

Na przykład

if $(ConfigurationName) == Debug xcopy something somewhere
 656
Author: Joseph Daigle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-26 08:39:58

Nie musisz używać goto. polecenie shell IF może być używane z okrągłymi nawiasami:

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".
)
 463
Author: gbjbaanb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 19:21:14

Dodaj swoje Zdarzenie budowania post jak normalne. Następnie zapisz projekt, otwórz go w notatniku (lub ulubionym edytorze) i Dodaj warunek do grupy Właściwości PostBuildEvent. Oto przykład:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
 113
Author: Franci Penov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 01:34:16

Alternatywnie (ponieważ zdarzenia są umieszczane w pliku wsadowym i następnie wywoływane), użyj następującego polecenia. (w polu build event, Nie w pliku wsadowym):

if $(ConfigurationName) == Debug goto :debug

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

goto :exit

:debug
' debug items in here

:exit

W ten sposób możesz mieć zdarzenia dla dowolnej konfiguracji i nadal zarządzać nimi za pomocą makr, zamiast przekazywać je do pliku wsadowego i pamiętaj, że %1 to $(OutputPath) itd:

 102
Author: GalleySlave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 09:56:39

Visual studio 2015: poprawna składnia to (trzymaj ją w jednej linii):

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

Brak błędu 255 tutaj.

 12
Author: Eric Bole-Feysot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-08 07:14:03

Możesz przekazać nazwę konfiguracji do skryptu post-build i sprawdzić ją tam, czy powinna działać.

Podaj nazwę konfiguracji za pomocą $(ConfigurationName)

Sprawdzanie jest oparte na tym, jak implementujesz krok po kompilacji - będzie to argument wiersza poleceń

 4
Author: Lou Franco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 18:44:05

To działa dla mnie w Visual Studio 2015.
Kopiuję wszystkie pliki dll z folderu znajdującego się w folderze lib na tym samym poziomie co mój folder solution do targetdirectory budowanego projektu.
Używając względnej ścieżki z katalogu mojego projektu i przechodząc w górę struktury folderów dwa kroki z..\..\lib

MySolutionFolder
....MyProject
Lib

if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE  (echo "Not Debug mode, no file copy from lib")
 -1
Author: Jaan Marks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 14:59:13

Jak każde ustawienie projektu, buildevents może być skonfigurowane dla każdej konfiguracji, po prostu wybierz konfigurację, którą chcesz zmienić w rozwijanym oknie dialogowym strony właściwości i edytuj krok budowania post

 -2
Author: Harald Scheirich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 18:48:43

W VS 2012 musisz użyć (myślę, że w VS 2010 też)

if $(Configuration) == Debug xcopy

$(ConfigurationName) było wymienione jako makro, ale nie zostało przypisane.

Tutaj wpisz opis obrazka

Porównaj: http://msdn.microsoft.com/en-us/library/c02as0cs (v=vs.110). aspx

 -2
Author: mawl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-14 07:46:20