2013-09-30 8 views
16

Können wir etwas wie folgt aus:VS2010: Können wir mehrere, wenn in Post-Build-Ereignis?

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 

Ich probierte es einmal, aber es funktioniert nicht. Der Fehlercode ist 255.

Antwort

28

Sie können so viele bedingte Anweisungen, wie Sie wollen, so dass sie nur durch neue Linie trennen und verlieren sonst

So

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

Um

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

und es wird kompilieren und läuft gut

Hinweis: Die Befehle werden Zeile für Zeile die s interpretiert werden B. als DOS-Stapeldatei, so ist es wichtig, die öffnende Klammer "(" in derselben Zeile wie die if-Anweisung und die schließende Klammer ")" in derselben Zeile wie der letzte Befehl im Block zu platzieren.

4

Wenn Ihre Post-Build-Logik kompliziert wird, würde ich vorschlagen, es in eine externe Datei zu verschieben. Zum Beispiel kann das folgende Postbuildereignis:

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

führt eine Batchdatei PostBuild.cmd im Projekt-Verzeichnis, vorbei $ (Configurationnamen) als Parameter. Sie können auch andere Parameter übergeben, z. B. $ (TargetPath).

Sie können dann implementieren, was auch immer Sie möchten, einschließlich mehrerer if-Anweisungen und, noch wichtiger, debuggen Sie es, ohne einen Visual Studio-Build auszuführen.

Verwandte Themen