2013-09-30 5 views
16

Czy mamy coś takiego:VS2010: Czy możemy mieć wiele, jeśli wydarzenie odbywa się po instalacji?

if "Debug"=="$(ConfigurationName)" 
(
    goto :nocopy 
) 
else if "Release"=="$(ConfigurationName)" 
(
    del "$(TargetPath).config" 
    copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config" 
) 
else if "ReleaseBeta"=="$(ConfigurationName)" 
(
    del "$(TargetPath).config" 
    copy "$(ProjectDir)\App.ReleaseBeta.config" "$(TargetPath).config" 
) 
else if "ReleaseProduction"=="$(ConfigurationName)" 
(
    del "$(TargetPath).config" 
    copy "$(ProjectDir)\App.ReleaseProduction.config" "$(TargetPath).config" 
) 
    :nocopy 

ja próbowałem, ale to nie działa. Kod błędu to 255.

Odpowiedz

28

Można mieć wiele instrukcji warunkowych, jak chcesz, tylko oddzielić je od nowej linii i stracić jeszcze

Więc zmienić

if "Debug"=="$(ConfigurationName)" 
(
    goto :nocopy 
) 
else if... 

Do

if "Debug" == "$(ConfigurationName)" (goto :nocopy) 
if "Release" ==" $(ConfigurationName)" (
    del "$(TargetPath).config" 
    copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config") 
if ... 

i będzie kompilować i działa dobrze

Uwaga: Polecenia będą interpretowane liniowo po s ame sposób jako plik wsadowy DOS, dlatego ważne jest umieszczenie nawiasu otwierającego "(" w tej samej linii co instrukcja if i nawias zamykający ")" w tym samym wierszu, co ostatnie polecenie w bloku.

4

Jeśli twoja logika post-build się komplikuje, sugeruję przeniesienie jej do zewnętrznego pliku. Na przykład, następujące zdarzenie post-build:

CALL "$(ProjectDir)PostBuild.cmd" $(ConfigurationName) 

wykonuje plik wsadowy PostBuild.cmd w projekcie-katalogu, przekazując $ (ConfigurationName) jako parametr. Można również przekazać inne parametry, takie jak $ (TargetPath).

Następnie można wdrożyć, co chcesz, w tym wiele instrukcji if, a co ważniejsze, debugować bez uruchamiania kompilacji Visual Studio.

Powiązane problemy