Frage

Ich entwickle einen Auto-Builder, dass eine Reihe von Schritten in unserem Build-Prozess ausgeführt wird und unsere Zielanwendung bauen. Wir haben eine Batch-Datei zu verwenden, die eine Reihe von Umgebungsvariablen oder genannt Tools einrichten, die Setup-Umgebungsvariablen und schließlich läuft ein ‚make‘.

Ich habe mit dem ‚Prozess‘ Klasse, die die Befehle für die Ausführung aber leider jedes Mal läuft man große Werke, die Änderungen an der Umgebung macht (wie etwas in die PATH Hinzufügen) diese Variablen gehen verloren, wenn der ‚Prozess‘ abgeschlossen . Der nächste ‚Prozess‘ instanziiert und erbt die env aus den ‚Aufruf‘ app (meine exe) wieder - was bedeutet, dass all env-Setup durch den letzten Befehl verloren. Wie gehen Sie mit dieser Situation? Gibt es einen besseren Weg, um eine Reihe von Batch-Datei wie Befehle in C # und zur Erhaltung der Umwelt sie einrichten?

läuft

Bitte beachten Sie, dass leider die alten Kinder haben erklärt, dass Nant / ant ist keine Option, so „Hey, warum nicht Nant verwenden - es das tut“ ist nicht die Antwort die ich suche.

Danke.

War es hilfreich?

Lösung

ich würde einige Code vorschlagen, dass Ihre Umgebungsvariablen in einer externen Datei speichern würde, und dann können Sie diese Variablen über die externe Datei zu Beginn der folgenden Prozesse abgerufen werden.

Andere Tipps

Nun, die System.Environment.SetEnvironmentVariable () -Methode können Sie den Umfang für eine Variable angeben können, die Sie festlegen. Suchst du danach? Nicht sicher, dass ich verstehe.

Wir verwenden CruiseControl.net ein NAnt Skript auszuführen. Sehr zu empfehlen.

Befehlszeilenoption das Äquivalent von Umgebungsvariablen zu setzen:

Das NAnt Skript kann -D aufgerufen werden.

Ich denke, das Problem ist nicht benutzerdefinierte Umgebungsvariablen hier in angeben. (Sie können sie über Process gesetzt.) Das Problem ist, die Änderungen beim Lesen durch die Prozesse zu Umgebungsvariablen gemacht gestartet wird. Ich bin mir nicht sicher, ob es möglich ist. Die einzigen Möglichkeiten, wie ich weiß, Set Umgebungsvariablen für den Prozess selbst und / oder für seine Kindprozesse. Ich weiß nicht, keine Möglichkeit, Umgebungsvariablen für einen übergeordneten Prozess eingestellt werden.

Umgebungsvariablen werden nicht festgelegt und kann nicht für den übergeordneten Prozess (*) festgelegt werden. Nur für den aktuellen Prozess und die, die es schafft - das ist Teil des Konzepts

.

(*) außer, vielleicht, mit OS-Interna rumgespielt.

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