2015-05-27 13 views
5

richtig festlegen Wenn ich einen Prozess einstellen, scheint es, dass ich nicht diese Variable, WorkingDirectory, in der richtigen Weise verwenden. Ich den Fehler (mit einem Rast)Wie Prozess Prozess WorkingDirectory in C#

Application = 'Test.exe', Command = '/ d = 1', Current = "C: \ Benutzer \ mb \ Desktop \ Integration \ Tests \ dailyTest \ dailyTest \ bin \ Debug \ Stress ', Nativer Fehler = Das System kann die angegebene Datei nicht finden.

Allerdings habe ich im Ordner Stress, Test.exe .. Ich verstehe wirklich nicht die Bedeutung davon.

Der Code ist der folgende (beachten Sie, dass ich Variable mit dem direkten String Inhalt zum besseren Verständnis ersetzt).

Ich weiß, dass das WorkingDirectory von UseShellExecute betroffen ist, aber ich respektierte dies.

+5

Zeigen Sie uns den Code Sie verwenden den Prozess zu erstellen . –

+0

siehe Originalpost !! –

+0

versuchen, anstelle von Arbeitsverzeichnis nur den gesamten Pfad für den Dateinamen verwenden –

Antwort

0

Versuchen Sie, Directory.Exists(proc.StartInfo.WorkingDirectory) hinzuzufügen, nachdem Sie es festgelegt haben. Ist Test.exe in diesem Verzeichnis vorhanden?

Händler:

string filename = Path.Combine(Directory.GetCurrentDirectory(), "Stress", "test.exe"); 

check File.Exists(filename); 

vielleicht filename als proc.StartInfo.FileName

Für Ihr Arbeitsverzeichnis verwenden verwenden: Path.Combine(Directory.GetCurrentDirectory(), "Stress")

ich sage Um zu klären würde zu verwenden:

proc.StartInfo.WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Stress"); 
proc.StartInfo.FileName = Path.Combine(Directory.GetCurrentDirectory(), "Stress", "Test.exe"); 
bool folderExists = Directory.Exists(proc.StartInfo.WorkingDirectory); 
bool fileExists = File.Exists(proc.StartInfo.FileName); 

Sie kann debuggen, um zu sehen, ob die Datei a Ordner existiert.

+0

ok hier ist das Ergebnis nach all den Versuchen. Sie existieren alle, wenn ich das tue, was du sagst. Es funktioniert jedoch immer noch nicht (auch wenn File.Exists true zurückgibt), wenn ich den Code ausführen, heißt es CurrentDirectory = '', Native Fehler = Kann die angegebene Datei nicht finden, warum sagt CurrentDirectory = "", wenn ich setze das Arbeitsverzeichnis? sind sie nicht gleich? –

+0

Ich mache das Zeichenfolge b = Path.Combine (proc.StartInfo.WorkingDirectory, proc.StartInfo.FileName); if (Datei.Existiert (b)) { b = ""; } proc.Start(); es heißt Pfad existiert, weil es in der if geht. Dann, wenn ich den Prozess starte, heißt es: Nativer Fehler = Das System kann die angegebene Datei nicht finden. –

0

mein Fehler gefunden:

ich auf Linux war, so brauche ich, dass meine exe angeben Datei „mono“

ausgeführt wird
process.FileName = "mono" 
process.Argument = "nameOfExe param1 param2..."