2016-09-20 9 views
-1

Моя программа работает нормально, когда он находится в режиме RELEASE, но когда я запускаю его в режиме DEBUG, он не будет работать на этих строк кода:Почему моя программа работает нормально в режиме деблокирования, но не работает в режиме отладки?

string l_strFileDir = @"C:\Program Files\Sil\Q 5.2\"; 

Process scriptProc = new Process(); 
scriptProc.StartInfo.FileName = @"USB_VID_PID.exe"; 
scriptProc.StartInfo.WorkingDirectory = l_strFileDir; 
scriptProc.StartInfo.UseShellExecute = false; 
scriptProc.StartInfo.CreateNoWindow = true; 

scriptProc.Start(); 

string l_strFilePath = l_strFileDir + @"\out.txt"; 

Ошибка является:

Исключение: Система не может найти указанный файл

и он дает мне трассировку стека.

Редактировать: Файл .exe не обязательно должен находиться в папке отладки, потому что я написал полный путь.

Когда программа прерывается в исключении, она написала, что файл не найден в другом пути, а не путь, который я написал в коде.

Исключение происходит в строке с помощью команды «Пуск».

нет двойной обратной косой черты в моем пути

this is the exception

+0

Когда вы нарушаете исключение, какой файл вы используете, пытается «найти»? Это должно быть довольно легко понять. –

+0

В вашем вопросе недостаточно информации. На какой строке возникает исключение? – easuter

+5

Вы проверили содержимое ваших папок BIN? Есть ли у вас «USB_VID_PID.exe», а другой нет? – musefan

ответ

0

DEBUG и RELEASE результат компиляции в выходе кода в разных каталогах. Вероятно, вы попытаетесь создать объект Process в файле, который просто не существует. Убедитесь, что ваш файл находится в правильной целевой директории или улучшает информацию о пути к файлу.

+0

у кого-то плохое несколько дней ... много вниз голосов без причины в течение последних нескольких дней. –

1

Проблема в том, что USB_VID_PID.exe не находится в папке отладки. Либо добавьте весь путь к .StartInfo.FileName, либо добавьте EXE в папку отладки.

scriptProc.StartInfo.FileName = Path.Combine(l_strFileDir, @"USB_VID_PID.exe"); 

From MSDN

Когда UseShellExecute ложно, WorkingDirectory свойство не используется, чтобы найти исполняемый файл. Вместо этого его значение относится к процессу , который запущен и имеет смысл только в контексте нового процесса .

+0

Я сомневаюсь, что OP когда-нибудь подтвердит, но я бы сказал, что этот ответ ясно показывает, в чем проблема и почему это происходит. – musefan

+0

lol ... проголосовали за правильный ответ :) –