I';我正在编写必须在windows和linux(在mono下)上运行的C#代码。处理两个服务器上的文件路径的简单方法?

I';我正在编写必须在windows和linux(在mono下)上运行的C#代码。处理两个服务器上的文件路径的简单方法?,c#,linux,mono,filepath,C#,Linux,Mono,Filepath,我正在为Kerbal空间编写一个mod程序,该程序将数据记录到一个文本文件中,以便在外部工具(matlab等)中使用。KSP在Linux和Windows上都能工作,我希望我的mod在这两个平台上都能玩得很好。我有点希望linux上的mono实现会做一些聪明的事情,并将的转换为/,特别是因为我只是以Directory.GetCurrentDirectory作为我的基础,所以我不必担心检测/指定像c:\vs/这样的东西 一个可接受的答案(至少目前是这样)是一种确定我在哪个平台上运行并以不同方式生成字

我正在为Kerbal空间编写一个mod程序,该程序将数据记录到一个文本文件中,以便在外部工具(matlab等)中使用。KSP在Linux和Windows上都能工作,我希望我的mod在这两个平台上都能玩得很好。我有点希望linux上的mono实现会做一些聪明的事情,并将的转换为/,特别是因为我只是以Directory.GetCurrentDirectory作为我的基础,所以我不必担心检测/指定像c:\vs/这样的东西


一个可接受的答案(至少目前是这样)是一种确定我在哪个平台上运行并以不同方式生成字符串的好方法(使用我可以设置的分隔符char变量,而不是斜杠字符串文本)。不过我可以自己查一下,我有点希望有一个巧妙的解决办法。我试着在这里用谷歌搜索,但没有什么特别突出的地方。

使用
Path.PathSeparator
\,Unix上的代码>/

如果要合并目录名,可以使用
Path.combine

要获取根目录(即
/
C:\
,可以使用
Path.GetPathRoot(directory.GetCurrentDirectory())


.

Mono中提供了转换路径名的更多信息,因此您可以在代码中愉快地使用反斜杠,然后使用
Mono\u IOMAP=all Mono something.exe
启动程序。Mono对应用程序的可移植性提出了很多建议。

尽可能多地使用System.Path.*。它将避免您必须执行特定的操作系统检查来确定临时目录、应用程序位置、数据/桌面/文档位置


合并并避免使用路径分隔符。如果您正在使用Path.PathSeparator手动解析和构建路径,请询问您的原因?很可能有一个std框架方法可以满足您的需求。吻;-)

Windows将接受/或\,因此您可以只使用/。啊…这就是我不使用Windows的原因,除了奇怪的游戏插件开发。谢谢,我下一步会尝试一下。另外,还有
Path.Combine
,我相信它会使用@Blorgbeard建议的适当分隔符。Path.Combine是最好的,但是Path.PathSeperator也可能会帮到你。很有趣,谢谢。我不知道,但是阅读正确的答案,尤其是OP是Path.Combine。谢谢,Path.Combine,这正是我需要的。了解Path.PathSeparator也很好,因为有几个地方我需要组合有趣的嵌套调用。我回去收拾一下。