2013-03-08 11 views
1

다른 컴퓨터에서 다른 사람의 코드를 사용하고 있습니다. 한 컴퓨터에서 Application.ExecutablePath는 프로그래머가 예상 했어야하는 결과를 반환하고 그렇지 않은 경우 결과를 반환합니다. 둘 다 Windows 7 시스템입니다. 그것은 프로그래머가 분명히 두 번째 반환 문자열을 예상응용 프로그램. C#의 실행 경로에 구분 기호가 섞여 있습니다.

"C:\\Dir1\\Dir2\\Dir3\\bin/Debug/APP.EXE" 

를 반환하는 다른 시스템에서

"C:\\Dir1\\Dir2\\Dir3/bin/Debug/APP.EXE" 

코드 않기 때문에, : 뭔가처럼 내 컴퓨터에

는 Application.ExecutablePath 반환 이 :

string path = Application.ExecutablePath; 
    short found = (short)path.LastIndexOf(@"\"); 

    if (found > -1) 
    { 
    path = path.Substring(0, found); 
    } 
    try 
    { 
    foreach (string File in Directory.GetFiles(path + @"\Res\Patterns\", "*.xml")) 
    { 
     found = (short)File.LastIndexOf(@"\"); 
     if (found > -1) 
     //... use files found 

및 파일 디렉토리가 Dir3 아래의 컴퓨터이므로 다른 컴퓨터에서는 발견되지만 내 컴퓨터에서는 발견되지 않습니다. Windows에서 슬래시 (예 : URL 경로)를 반환하기로 결정하는시기와 장소에 대한 정보는 UNC 경로와 '\'를 사용하여 비교할 수 없습니다. 이 코드가 다른 시스템에서 다르게 작동하는 이유는 무엇입니까?

답변

1

C:\\Dir1\\Dir2\\Dir3/bin/debug으로 단순화 된 경로가 실제로 Dir3 이름에 해시 (#)가 있음을 예상합니다.

이것은 분명히 Application.ExecutablePath 인 버크입니다. 대신 Assembly.GetEntryAssembly().Location을 사용할 수 있으며 일관된 결과를 반환합니다.