c# - ver - saber especificaciones de una mac
Cómo detectar correctamente los sistemas operativos Windows, Linux y Mac. (2)
No pude encontrar nada realmente eficiente para detectar correctamente en qué plataforma (Windows / Linux / Mac) estaba ejecutando mi programa C #, especialmente en Mac, que devuelve Unix y no se puede diferenciar con las plataformas Linux.
Así que hice algo menos teórico, y más práctico, basado en las especificidades de Mac.
Estoy publicando el código de trabajo como una respuesta. Por favor, comenta si también funciona bien para ti / puedes mejorarlo.
Gracias !
Respuesta:
¡Aquí está el código de trabajo!
public enum Platform
{
Windows,
Linux,
Mac
}
public static Platform RunningPlatform()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.Unix:
// Well, there are chances MacOSX is reported as Unix instead of MacOSX.
// Instead of platform check, we''ll do a feature checks (Mac specific root folders)
if (Directory.Exists("/Applications")
& Directory.Exists("/System")
& Directory.Exists("/Users")
& Directory.Exists("/Volumes"))
return Platform.Mac;
else
return Platform.Linux;
case PlatformID.MacOSX:
return Platform.Mac;
default:
return Platform.Windows;
}
}
Por los comentarios en la página de propiedades Environment.OSVersion :
La propiedad Environment.OSVersion no proporciona una manera confiable de identificar el sistema operativo exacto y su versión. Por lo tanto, no recomendamos que utilice este método. En su lugar: para identificar la plataforma del sistema operativo, use el método RuntimeInformation.IsOSPlatform.
RuntimeInformation.IsOSPlatform funcionó para lo que necesitaba.
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
// Your OSX code here.
}
elseif (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// Your Linux code here.
}
Tal vez eche un IsRunningOnMac método IsRunningOnMac en la fuente de Pinta: