2012-02-03 16 views
12

Sto cercando di ottenere un'applicazione C# in esecuzione su OSX che non sia esattamente indolore. Per risolvere alcuni dei problemi a breve termine, sto pensando di impostare alcune regole specifiche quando è in esecuzione in OSX.C# compilato in mono - Rileva sistema operativo

Ma ... Che cosa posso utilizzare per determinare se l'app è in esecuzione su Windows o OSX?

+0

devo assicurarsi di aver compreso quanto segue. Capisci se usi Mono, la tua applicazione funzionerà solo su un sistema operativo con Mono installato, incluso Windows. –

+0

@Ramhound: Davvero? Pensavo che il CIL emesso da Mono fosse lo stesso di MS.net 2.0. Sentiti libero di correggermi se sbaglio. So molto poco di Mono. – spender

+0

@spender - Ci sono alcuni avvertimenti durante lo sviluppo per il runtime Mono. La maggior parte ha soluzioni alternative, però. C'è anche un analizzatore di migrazione per la migrazione di progetti .NET: http://www.mono-project.com/MoMA. Lunga vita al Mono. – ken

risposta

17

Dal Mono wiki (nella mia esperienza, OSX è identificato come 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

Perfetto! Grazie. Accetterò appena mi sarà permesso. – BlueVoodoo

+1

Questo ancora non dirà la differenza tra linux e OSX. – IanNorton

+4

In realtà, il nuovo mono ha [OSX nell'enum delle piattaforme] (http://docs.go-mono.com/index.aspx?link=T%3ASystem.PlatformID). Quindi, a seconda della versione mono, avrai Unix o MacOSX – IanNorton

Problemi correlati