2014-09-10 7 views
1

Windows에서 .net의 응용 프로그램을 Mac의 mono로 변환합니다. 나는 백 슬래시가 모노 - 맥에서 어떻게 해석되는지와 관련된 것으로 생각되는 오류를 발견했다.Mac의 모노에서 .net Windows 버전과 다른 경로 해석이 사용됩니까?

Path.GetDirectoryName("Assembly\\file.dll") 

"assembly"를 반환하는 .net 창에서 빈 문자열을 반환하는 mac의 경우. 정상적인 행동인가요? 경로가 일종의 구성으로 해석되는 방식을 변경하거나 모든 백 슬래시를 전달 슬래시로 교체해야합니까? 만약 경로 등의 차이를 무시 MONO_IOMAP 환경 변수를 사용하여 모노에

+1

플랫폼 별 구분 기호를 사용해야 할 가능성이 높습니다. http://msdn.microsoft.com/en-us/library/system.io.path.directoryseparatorchar%28vs.110%29.aspx – xxbbcc

+0

@xxbbcc 분명히 옳습니다. 문제는 SharpZipLib 라이브러리를 사용하여 발생합니다. ZipEntry 객체는 운영 체제가 실행중인 계정을 고려하지 않고 백 슬래시로만 경로를 만듭니다. Path.DirectorySeparatorChar의 값을 대신 사용하여 이러한 경로를 처리 할 것입니다. – mjsr

+1

.NET 용 다양한 라이브러리는 Windows 이외의 플랫폼 용으로 작성되지 않았을 수 있습니다. SharpZipLib에 대해서는 잘 모릅니다 만 라이브러리가 특정 구분 기호를 하드 코드하면 모든 종류의 파일 시스템 문제가 발생할 수 있습니다. – xxbbcc

답변

1

http://www.mono-project.com/docs/advanced/iomap/

참조 ('\'대 '/') 및 경로 분리기 (창, UNIX 대소 문자를 구분하지 않는 경우이다) 어쨌든 가장 좋은 장기 솔루션은 Path.Combine 또는 Path.DirectorySeparator과 같은 메소드를 사용하여 이러한 문제를 해결하는 것입니다.