Frage

Ich versuche, eine Batch-Datei ausführen, um eine Reihe von Dateien um nach einem Build zu bewegen, damit ich ein Post-Build-Ereignis erstellt habe, die wie folgt aussieht:

$(ProjectDir)CopyPlugins.bat $(ConfigurationName)

Das Problem ist, dass, wenn Visual Studio versucht, das Ereignis laufen ich den Fehler, dass der Prozess exited with code 9009

Das Problem scheint zu sein, dass VS die gesamte Zeile in Anführungszeichen setzt, so dass der Befehl läuft es ist:

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat Debug"

Natürlich, was ich wollte es tun war eine sehr subtile Variation, die Position des schließenden Anführungszeichen zu ändern.

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat" Debug

Gibt es eine Möglichkeit, um diesen ziemlich ärgerlich „help“, dass VS bietet?

War es hilfreich?

Lösung

Erstellen Sie zwei weitere Batch-Dateien, die die erste führt nur mit verschiedenen Argumenten.

CopyPlugins-debug.bat Call CopyPlugins.bat debug

CopyPlugins-release.bat Call CopyPlugins.bat release

Und in VS Post-Build-Ereignis "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"

Andere Tipps

Wenn Sie versuchen, komplizierte Post-Build zu tun Kopieren es wert sein könnte Blick auf die MSBuild Community-Aufgaben projizieren. Es hat eine Aufgabe, die Robocopy.exe wickelt, die eine sauberere Weg sein könnte Ihre Aufgabe zu erfüllen.

Generell mache ich ein separates „build“ Projekt, das leer ist und tut nichts anderes als execute / pre Post Build Schritte. Es funktioniert ganz gut.

Ich glaube, Sie könnten nur Zitate müssen um den Pfad zum Batch-Skript, das heißt Ihr Post-Build-Ereignis sollte sein:

"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)

Das ist für einen C # -Projekt für mich gearbeitet in einem Verzeichnis mit einem Leerzeichen in seinem Weg.

Geben Sie einfach es wie folgt

d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"

Das ist für mich gearbeitet. Dont Verwendung CALL Funktion der Batch-Datei aufrufen !!!.

Pass alle Parameter in die Haupt-Batch-Datei und Prozess Dinge im Inneren. Wenn Sie andere Chargen oder Satz von Chargen haben aufgerufen werden, nicht nennt sie in dem Postbuildereignis, rufen Sie einfach die anderen Batch-Dateien aus der Hauptbatchdatei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top