2016-09-20 2 views
-1

는 RELEASE 모드에있을 때,하지만 난 디버그 모드에서 실행하면 코드 줄에 실패내 프로그램이 릴리스 모드에서는 제대로 실행되지만 디버그 모드에서는 실패하는 이유는 무엇입니까? 내 프로그램이 잘 실행되고

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

디버그 및 릴리스 컴파일 결과에는 이중 백 슬래시가 없다. 단순히 존재하지 않는 파일에 Process 개체를 만들려고합니다. 파일이 올바른 대상 디렉토리에 있는지 확인하거나 파일에 대한 경로 정보를 개선하십시오.

+0

누군가가 나쁜 며칠을 보내고 있습니다. 지난 며칠간 이유없는 표결. –

1

문제는 USB_VID_PID.exe이 (가) 디버그 폴더에 없다는 것입니다. .StartInfo.FileName에 전체 경로를 추가하거나 EXE를 디버그 폴더에 추가하십시오.

From MSDN

인 UseShellExecute가 false

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

의 WORKINGDIRECTORY 속성은 실행 파일을 찾는 데 사용 없습니다. 대신, 해당 값은 시작된 프로세스 에 적용되며 새로운 프로세스의 컨텍스트 내에서만 의미가 있습니다.

+0

나는 OP가 절대 확인하지 않을지 의심 스럽지만이 대답은 문제가 무엇인지, 왜 그것이 발생하는지 명확하게 보여줍니다. – musefan

+0

권자 ... 아래로 옳은 대답에 투표 :) –

관련 문제