in csharp/NativeUtils/VariablesMapper.cs [196:218]
internal static string GetOsName()
{
#if DETECT_OS_AND_ARCH_FROM_RUNTIMEINFO
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return OS.windows.ToString();
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return OS.darwin.ToString();
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
return OS.linux.ToString();
throw new Exception("Unknow operation system.");
#else
// .NET std/core >= 2.0 supports both methods
int p = (int)Environment.OSVersion.Platform;
if (p < 4)
return OS.windows.ToString();
if (p == 6) /* Old Mac OS value */
return OS.darwin.ToString();
if (p == 4 || p == 128) /* Any Unix */
return ReadProcessOutput("uname").Contains("Darwin") ? OS.darwin.ToString() : OS.linux.ToString();
throw new Exception("Unknow operation system.");
#endif
}