2012-02-03 10 views
12

Estoy tratando de ejecutar una aplicación C# bajo OSX, que no es exactamente libre de dolor. Para solucionar algunos de los problemas a corto plazo, estoy pensando en configurar algunas reglas específicas cuando se ejecuta en OSX.C# compilado en mono - Detectar OS

Pero ... ¿Qué puedo usar para determinar si la aplicación se está ejecutando en Windows o OSX?

+0

tengo que asegurarse de que comprende lo siguiente. Comprende si utiliza Mono, su aplicación solo funcionará en un sistema operativo con Mono instalado, esto incluye Windows. –

+0

@Ramhound: ¿De verdad? Pensé que el CIL emitido por Mono es el mismo que MS.net2.0. Siéntete libre de corregirme si me equivoco. Sé muy poco sobre Mono. – spender

+0

@spender - Hay algunas advertencias al desarrollar para el tiempo de ejecución Mono. La mayoría tienen soluciones, sin embargo. También hay un analizador de migración para migrar proyectos .NET: http://www.mono-project.com/MoMA. Larga vida al Mono. – ken

Respuesta

17

Desde el Mono wiki (en mi experiencia, OSX se identifica como Unix):

int p = (int) Environment.OSVersion.Platform; 
if ((p == 4) || (p == 128)) { 
     Console.WriteLine ("Running on Unix"); 
} else { 
     Console.WriteLine ("NOT running on Unix"); 
} 

O

string msg1 = "This is a Windows operating system."; 
string msg2 = "This is a Unix operating system."; 
string msg3 = "ERROR: This platform identifier is invalid."; 

OperatingSystem os = Environment.OSVersion; 
PlatformID  pid = os.Platform; 
switch (pid) 
{ 
    case PlatformID.Win32NT: 
    case PlatformID.Win32S: 
    case PlatformID.Win32Windows: 
    case PlatformID.WinCE: 
     Console.WriteLine(msg1); 
     break; 
    case PlatformID.Unix: 
     Console.WriteLine(msg2); 
     break; 
    default: 
     Console.WriteLine(msg3); 
     break; 
} 
+0

¡Perfecto! Gracias. Lo aceptaré tan pronto como me sea permitido. – BlueVoodoo

+1

Esto todavía no notará la diferencia entre Linux y OSX. – IanNorton

+4

En realidad, el mono más nuevo tiene [OSX en las plataformas enum] (http://docs.go-mono.com/index.aspx?link=T%3ASystem.PlatformID). De modo que, dependiendo de la versión mono, obtendrá Unix o MacOSX – IanNorton

Cuestiones relacionadas