2012-07-12 4 views
0

PHP를 통해 디버그 모드로 작성된 .NET 응용 프로그램을 실행하려고합니다.이상한 .NET PATH 오류

PHP가 다른 응용 프로그램을 성공적으로 실행합니다.

문제는 Windows 탐색기 (즉, 검색 주소창에 "C : \ app.exe arguments"를 입력)를 통해이 응용 프로그램을 실행할 때 문제가되는 것입니다.

그러나 PHP 나 CMD.exe (명령 프롬프트)로 동일하게 실행하면 응용 프로그램이 충돌합니다. 임시 폴더에서 생성 된 메타 데이터 파일을보고 FileNotFound IO 예외가 발생했습니다.

실마리가 있습니까?

이 도와주세요 일부 악명 디렉토리 문제 (작업 경로 등), 감사 같은데. 아마 응용 프로그램이 항상 사실이 아니다있는 현재 작업 디렉토리에 대한 가정을하고있다 -

+0

일부 코드를 게시 할 수 있습니까? –

+0

대단한 코드이므로 게시하는 것이 좋습니다. –

+0

이 작업을 수행하는 환경에 대한 단서를 제공해 줄 수 있습니까? ie OS, 버전 PHP 등의 버전 –

답변

1

예는 응용 프로그램 버그 같은 소리 일부 악명 디렉토리 문제처럼 보인다. 아마도 현재 작업 디렉토리 (Environment.CurrentDirectory)가 응용 프로그램의 설치 디렉토리 (AppDomain.CurrentDomain.BaseDirectory)와 같다고 가정합니다.

이 가정은 Windows 탐색기에서 앱을 실행할 때 발생할 수 있지만 반드시 일반적인 경우는 아닙니다.

설치 디렉터리를 기준으로 폴더에 저장된 파일에 액세스하려면 Environment.CurrentDirectoryAppDomain.CurrentDomain.BaseDirectory으로 바꿉니다.

+0

안녕하세요, 돌아와 줘서 고마워요 !!! AppDomain.Current를 Environment.CurrentDirectory로 바꾸려고 시도했지만 작동하지 않았습니다. –

+0

@Carlos, FileNotFoundException에는 일반적으로 발견되지 않은 파일의 이름을 포함하는 FileName 속성이 있습니다. 일단 이걸 보면, 페니가 떨어질 것입니다! 주의 : 파일을 여는 상대 경로를 사용하는 코드도있을 수 있습니다.이 코드는 현재 작업 디렉토리와 관련이 있으며 응용 프로그램 설치 디렉토리에 상대적인 전체 경로로 변경해야 할 수도 있습니다. Path.Combine (AppDomain .CurrentDomain.BaseDirectory, relativePath)'. – Joe

+0

안녕하세요, 모든 파일을 열지 않는 코드를 만들었으며 문제가 지속되었습니다. 나중에, 당신이 말하는 파일 이름이 dll 파일이라는 것을 알았습니다. 이제 dll 파일은 응용 프로그램과 동일한 디렉토리에있을뿐만 아니라 폴더도 시스템의 PATH 변수에 포함됩니다. 그래도 고마워. [설정 : Windows 7 Home Premium, PHP 5+ -> XAMPP] –