visual ver una studio saber programa para online mac las especificaciones como caracteristicas c# macos mono cross-platform

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. }