2015-05-27 9 views
5

Quando si imposta un processo, sembra che non sto usando quella variabile, WorkingDirectory, nel modo corretto. Ottengo l'errore (con una cattura)come impostare correttamente il processo WorkingDirectory in C#

ApplicationName = 'Test.exe', CommandLine = '/ D = 1', CurrentDirectory = 'C: \ Users \ mb \ Desktop \ Integration \ Test \ dailyTest \ dailyTest \ bin \ Debug \ Stress ', Errore nativo = Il sistema non riesce a trovare il file specificato.

Tuttavia nella cartella Stress, ho Test.exe .. Realmente non capisco il significato di questo.

Il codice è il seguente (si noti che ho sostituito la variabile con il contenuto della stringa diretta per una migliore comprensione).

Process proc = new System.Diagnostics.Process(); 

proc.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory() + "\\" + "Stress"); 
proc.StartInfo.FileName = "Test.exe"; 
proc.StartInfo.Arguments = "/d=1"; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = false; 
proc.Start(); 
proc.WaitForExit(); 

return proc.ExitCode; 

So che la directory di lavoro è interessata da UseShellExecute, tuttavia ho rispettato questo.

+5

ci mostrano il codice che si sta utilizzando per creare il processo . –

+0

vedere il post originale !! –

+0

provare invece di utilizzare workingdirectory per utilizzare semplicemente l'intero percorso per il nome file –

risposta

0

Prova ad aggiungere Directory.Exists(proc.StartInfo.WorkingDirectory) dopo averlo impostato. Test.exe esiste in quella directory?

Prova anche:

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

check File.Exists(filename); 

forse usano filename come proc.StartInfo.FileName

Per la vostra directory di lavoro uso: Path.Combine(Directory.GetCurrentDirectory(), "Stress")

Per chiarire direi di usare:

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

È può eseguire il debug per vedere se il file a esiste la cartella nd.

+0

ok ecco il risultato dopo tutti i tentativi. Esistono tutti quando faccio come dici tu. Tuttavia continua a non funzionare (anche se File.Ex restituisce true), quando eseguo il codice dice CurrentDirectory = '', Errore nativo = Impossibile trovare il file specificato perché dice CurrentDirectory = "" quando imposto la WorkingDirectory? non sono gli stessi? –

+0

Lo faccio string b = Path.Combine (proc.StartInfo.WorkingDirectory, proc.StartInfo.FileName); if (File.Esiste (b)) { b = ""; } proc.Start(); dice che il percorso esiste perché va nel if. poi quando avvio il processo dice questo: Errore nativo = Il sistema non riesce a trovare il file specificato. –

0

trovato il mio errore:

ero su Linux, quindi ho bisogno di specificare che il mio file exe viene eseguito da "mono"

process.FileName = "mono" 
process.Argument = "nameOfExe param1 param2..." 
Problemi correlati