No pude encontrar nada realmente eficiente para detectar correctamente qué plataforma (Windows/Linux/Mac) se estaba ejecutando mi programa C#, especialmente en Mac que devuelve Unix y no puede ¡Difícilmente ser diferenciado con las plataformas Linux!Cómo detectar adecuadamente los sistemas operativos Windows, Linux y Mac
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. Comente si también funciona bien para usted/puede mejorarse.
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;
}
}
Bueno voy a publicar la respuesta en 8 horas cuando voy a estar autorizado a hacerlo :) – virrea
Si ha código de trabajo, editar tu pregunta e incluirla en la pregunta. –
Sí, es lo que estaba haciendo :) ¿Por qué? – virrea