C#System.PlatformID.Unix vs. Linux

Ste*_*ger 0 unix vb.net linux mono

题:

我需要在C#应用程序中进行一些系统调用.不幸的是,这在Linux上的行为与在UNIX上的行为不同.

现在,我曾经像这样在运行时切换操作系统

If Environment.OSVersion.Platform = System.PlatformID.Unix Then
    ' Linux/Unix '
ElseIf Environment.OSVersion.Platform = System.PlatformID.MacOSX Then
    ' Apple '
Else
    ' Windows '
End If
Run Code Online (Sandbox Code Playgroud)

现在的问题是我需要区分UNIX和Linux,因为它们是不同的.

有没有办法可以判断操作系统是Linux还是Unix?最好不要通过调用uname -a

我不想放弃Unix而只使用Linux,只是因为微软没有添加PlatformID.Linux ......

jpo*_*bst 5

您将需要使用"uname -a"来区分Linux和Unix以及OSX.由于历史原因,Mono将OSX报告为Unix,而不是MacOSX.

一些使用uname的代码可以在这里找到:http: //github.com/jpobst/Pinta/blob/master/Pinta/Platform.cs