System.Diagnostics.Process.Start ??? was stimmt denn nicht?
-
Hi,
habe hier vor einen programmaufruf zu starten:
private void erzeugenUndÖffnenToolStripMenuItem_Click(object sender, EventArgs e) { folderBrowserDialog1.ShowDialog(); String command = "svn.exe"; String[] commandArgs = new String[4]; commandArgs[0] = "log"; commandArgs[1] = "--xml"; commandArgs[2] = "-v"; commandArgs[3] = folderBrowserDialog1.SelectedPath; MessageBox.Show(command); System.Diagnostics.Process.Start(command, commandArgs); }
funktioniert leider nicht! die msdn habe ich nem kollegen geliehen und noch nicht installiert
verdammt!
gruesse
-
Ich kann dir zwar vermutlich nicht mit dem Problem helfen, aber zumindest ein Tip für die Zukunft: "funktioniert nicht" ist keine besonders aussagekräftige Fehlermeldung. Bekommst du Compiler/Linker-Meldungen? Wenn ja, welche? Stürzt dein Programm ab (wo und mit welcher Meldung?)? ...?
-
Programm bricht ab mit der Meldung:
{"Das System kann die angegebene Datei nicht finden"}
in der fehlerliste steht:
Fehler 1 Die beste Übereinstimmung für die überladene System.Diagnostics.Process.Start(string, string)-Methode hat einige ungültige Argumente. E:\SubversionHitlist\SubversionHitlist\SubversionHitlist\Form1.cs 47 13 SubversionHitlist Fehler 2 2-Argument: kann nicht von "string[]" in "string" konvertiert werden. E:\SubversionHitlist\SubversionHitlist\SubversionHitlist\Form1.cs 47 55 SubversionHitlist
-
Wenn ich die Fehlermeldung richt deute, erwartet die Start() kein String-Array als zweiten Parameter, sondern einen einzelnen String - vermutlich alle Kommando-Argumente durch Leerzeichen getrennt.
-
-
sooo, hab mir nun von unseren Entwicklern (die alle keine zeit für mich haben) die msdn geklaut und installiert. dementsprechend habe ich das nun so gemacht:
//Datei erzeugen und öffnen private void erzeugenUndÖffnenToolStripMenuItem_Click(object sender, EventArgs e) { folderBrowserDialog1.ShowDialog(); String command = "svn.exe"; String commandArgs = "log --xml -v " + folderBrowserDialog1.SelectedPath + " > d:\\subversion.xml"; MessageBox.Show(command + " " + commandArgs); System.Diagnostics.Process.Start(command, commandArgs); }
leider wird die Datei d:\subversion.xml nicht erzeugt. aber das pipen muss doch funktionieren. fehlermeldungen gibts keine mehr.
gruesse
-
Das Pipen hat nichts mit Argumenten zu tun sondern sind Befehle der Konsole. In der Tat werden diese hier ignoriert. Du musst also den Standard-Out des Prozesses manuell in Deiner Anweisung in eine Datei umleiten.
-
hi,
danke. dann werd ich das mal tun. anders wärs halt einfacher
gruesse
-
rene04 schrieb:
danke. dann werd ich das mal tun. anders wärs halt einfacher
Da hast Du recht, und die einfachere Lösung kannst Du sogar verwenden – indem Du einfach den Kommandozeileninterpreter aufrufst:
string command = Environment.GetEnvironmentVariable("comspec"); string args = string.Format( @"/c svn.exe log --xml -v {0} > d:\subversion.xml", folderBrowserDialog1.SelectedPath ); System.Diagnostics.Process.Start(command, args);
(ungetestet.)