Ich bin gerade dabei, CruiseControl.NET einzurichten. Das Problem, das ich habe, ist, dass ich CC als Konsolenanwendung ausführe. Wenn mein Build erfolgreich abgeschlossen und ausgeführt wird (mithilfe von exec), wird es innerhalb der CruiseControl DOS-Eingabeaufforderung gestartet. Ich verwende nur einfache Batch-Dateien, um meine App zu starten, aber wenn sie innerhalb derselben Eingabeaufforderung wie CC ausgeführt wird, glaubt CC, dass der Build so lange fortgesetzt wird, wie meine App ausgeführt wird.
Gibt es Befehlszeilenparameter cmd.exe
, die ein weiteres separates Eingabeaufforderungsfenster erzeugen?
windows
command-line
cmd
Mark Stahler
quelle
quelle
DETACHED_PROCESS
(dh ohne Konsole). . Wenn es mit dem Erstellungsflag gestartet wirdCREATE_NEW_CONSOLE
(wie es von CMDstart
verwendet wird), weist die Basis-DLL immer eine neue Konsole zu, anstatt die der übergeordneten zu erben.Antworten:
Ich denke das funktioniert:
quelle
Hier ist der Code, den Sie benötigen:
quelle
@cmd
? Gibt es eine Dokumentation dafür?@
Unterdrückt die direkte Ausgabe, die normalerweise in der Eingabeaufforderung angezeigt wird, der Befehl wird jedoch weiterhin ausgeführt.^
. :(Geben Sie einfach
start
die Eingabeaufforderung ein:Dies öffnet neue
cmd
Fenster.quelle
öffnet ein separates Fenster
öffnet die Batchdatei und führt sie an einer anderen Eingabeaufforderung aus
quelle
Sie können diese 3 Befehle einfach an der Eingabeaufforderung eingeben:
start
start cmd
start cmd.exe
quelle
Um einen beliebigen cmd-Dateityp zu erstellen, müssen Sie lediglich den Inhalt als .bat speichern, d. H.
Machen Sie daraus eine "example.bat" -Datei, speichern Sie sie, öffnen Sie sie und führen Sie sie aus.
quelle
Schreiben Sie einfach in Ihre Fledermausdatei
oder
quelle
&
, dass Sie in der neuen Eingabeaufforderung mehrere Befehle ausführen. Ich möchte hinzufügen,exit
damit die Eingabeaufforderung geschlossen wird, wenn der Befehl ausgeführt wurde.Ich habe auch versucht, eine Batchdatei auszuführen, die den Dämonprozess / Server am Ende der CCNET-Aufgabe ausführt. Die einzige Möglichkeit, CruiseControl zu einem unabhängigen asynchronen Prozess zu machen, ohne auf das Ende des Prozesses zu warten, ist:
Verwenden Sie den Taskplaner, um die Batchdatei als CCNET-Task auszuführen (mithilfe von schtasks.exe).
Möglicherweise müssen Sie den Prozess zu Beginn von ccnet beenden
PS: Die ausgewählte Antwort mit "start cmd.exe" funktioniert nicht. Eine neue Eingabeaufforderung wird zwar erzeugt, aber CCNET wartet, bis der erzeugte Befehl beendet ist.
quelle