2015-05-27 13 views
5

Khi thiết lập quy trình, có vẻ như tôi không sử dụng biến đó, WorkingDirectory, theo cách thích hợp. Tôi nhận được lỗi (với một nắm bắt)cách đặt đúng quy trình WorkingDirectory trong C#

ApplicationName = 'test.exe', commandline = '/ d = 1', CurrentDirectory = 'C: \ Users \ mb \ Desktop \ Integration \ thử nghiệm \ dailyTest \ dailyTest \ bin \ Debug \ Stress ', Lỗi gốc = Hệ thống không thể tìm thấy tệp được chỉ định.

Tuy nhiên trong thư mục Căng thẳng, tôi có Test.exe .. Tôi thực sự không hiểu ý nghĩa của điều này.

Mã sau đây (lưu ý rằng tôi đã thay thế biến bằng nội dung chuỗi trực tiếp để hiểu rõ hơn).

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; 

Tôi biết WorkingDirectory bị ảnh hưởng bởi UseShellExecute, tuy nhiên tôi tôn trọng điều này.

+5

Hiện chúng tôi mã bạn đang sử dụng để tạo ra quá trình . –

+0

xem bài đăng gốc !! –

+0

hãy thử thay vì sử dụng workingdirectory để chỉ sử dụng toàn bộ đường dẫn cho tên tệp –

Trả lời

0

Thử thêm Directory.Exists(proc.StartInfo.WorkingDirectory) sau khi bạn đặt. Test.exe có tồn tại trong thư mục đó không?

Cũng thử:

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

check File.Exists(filename); 

có lẽ sử dụng filename như proc.StartInfo.FileName

Để sử dụng thư mục làm việc của bạn: Path.Combine(Directory.GetCurrentDirectory(), "Stress")

Để làm rõ tôi sẽ nói để sử dụng:

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

Bạn có thể gỡ lỗi để xem tệp có thư mục thứ hai tồn tại.

+0

ok đây là kết quả sau khi tất cả các cố gắng. Tất cả chúng đều tồn tại khi tôi làm như bạn nói. Tuy nhiên nó vẫn không hoạt động (ngay cả khi File.Exists trả về true), khi tôi thực thi mã nó nói CurrentDirectory = '', Native error = Không thể tìm thấy tệp được chỉ định tại sao nó lại nói CurrentDirectory = "" khi tôi đặt WorkingDirectory? họ không giống nhau sao? –

+0

Tôi làm điều này chuỗi b = Path.Combine (proc.StartInfo.WorkingDirectory, proc.StartInfo.FileName); nếu (Tệp.Hiện tại (b)) { b = ""; } proc.Start(); nó nói đường dẫn tồn tại bởi vì nó đi trong if. sau đó khi tôi bắt đầu quá trình, nó nói điều này: Lỗi gốc = Hệ thống không thể tìm thấy tệp được chỉ định. –

0

Tìm thấy lỗi của tôi:

tôi đã được trên Linux, vì vậy tôi cần phải xác định rằng tập tin exe của tôi được thực hiện bởi "mono"

process.FileName = "mono" 
process.Argument = "nameOfExe param1 param2..." 
Các vấn đề liên quan