2014-09-10 63 views
1

我正在翻译windows上的.net应用程序到mac上的mono。我发现了一个正在发生的错误,我认为这与在单声道Mac上解释反斜杠的方式有关。Mac上的单声道路径解释是否与.net Windows版本不同?

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

对于返回“Assembly”的.net窗口返回空字符串的mac的mono。这是正常的行为吗?我是否可以用某种配置更改路径解析方式,或者我需要用正斜杠替换每个反斜杠?

+1

您可能需要使用平台特定的分隔符。 http://msdn.microsoft.com/en-us/library/system.io.path.directoryseparatorchar%28v=vs.110%29.aspx – xxbbcc 2014-09-10 15:46:22

+0

@xxbbcc显然你是对的。使用库SharpZipLib出现问题。 ZipEntry对象只用反斜杠创建路径,而不考虑操作系统正在运行的路径。我想我会使用Path.DirectorySeparatorChar的值替换这些路径。 – mjsr 2014-09-10 15:56:18

+1

用于.NET的各种库可能不是针对Windows以外的平台编写的 - 我不清楚SharpZipLib的具体情况,但是如果某个库硬编码了特定分隔符,则它可能具有各种文件系统问题。 – xxbbcc 2014-09-10 16:19:43

回答

1

在单声道可以使用MONO_IOMAP环境变量来忽略像路径差(窗口是不区分大小写,UNIX是区分大小写),路径分隔符(“\” VS“/”)

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

无论如何,最好的长期解决方案是使用像Path.CombinePath.DirectorySeparator这样的方法来解决这些问题

相关问题