Pequeña biblioteca de C# para saber si Windows, Mac, Linux, Android, iOS

Necesito una biblioteca C# muy pequeña que me diga en qué sistema operativo se está ejecutando mi programa C#.

No necesito el número de versión del sistema operativo, solo algo muy general, por ejemplo, estaría feliz con uno de:

Windows, Mac, Linux, Android, iOS

Requisitos:

  • Código abierto, idealmente dominio público
  • Descargable fácilmente como DLL

Ninguna de las soluciones en https://stackoverflow.com/questions/10138040/how-to-detect-properly-windows-linux-mac-operating-systems es lo suficientemente robusta y fácil.

Respuestas (1)

C# en sí proporciona un método para detectar qué sistema operativo está ejecutando en un nivel básico. Todos los sistemas operativos que puede detectar se pueden encontrar en el enlace. Esto es lo que estabas buscando?

OperatingSystem os = Environment.OSVersion;
PlatformID     pid = os.Platform;
switch (pid) 
    {
    case PlatformID.Win32NT:
    case PlatformID.Win32S:
    case PlatformID.Win32Windows:
    case PlatformID.WinCE:
        Console.WriteLine("I'm on windows!");
        break;
    case PlatformID.Unix:
        Console.WriteLine("I'm a linux box!");
        break;
    case PlatformID.MacOSX:
        Console.WriteLine("I'm a mac!");
        break;
    default:
        Console.WriteLine("No Idea what I'm on!");
        break;
    }
Aparentemente, el valor es a veces Unix incluso para MacOS: stackoverflow.com/questions/10138040 (también vinculado a mi pregunta)
@Nicolas Raou: Eso es porque OSX I Unix también.
@StefanSteiger Si bien es técnicamente cierto, dicho valor no es tan informativo como lo que solicita la pregunta. Si hay una , entonces sería mejor PlatformID.MacOSXuna solución que brinde para todos los sistemas MacOS.PlatformID.MacOSX