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.)


Anmelden zum Antworten