2010-12-10 9 views

Respuesta

14

Bueno ciertamente se podría utilizar

#if MONO 

y luego compilar con

gmcs -define:MONO ... 

(O ponerlo en su configuración de generación Mono, por supuesto. Realmente depende de cómo se está construyendo su biblioteca.)

... ¿qué estás buscando más allá de eso?

19

manera preferida es utilizar la detección de tiempo de ejecución, ya que esto permite para los mismos conjuntos para ser utilizado en cualquiera de las plataformas:

using System; 

class Program { 
    static void Main() 
    { 
     Type t = Type.GetType ("Mono.Runtime"); 
     if (t != null) 
      Console.WriteLine ("You are running with the Mono VM"); 
     else 
      Console.WriteLine ("You are running something else"); 
    } 
} 
+0

no ayuda a aquellos de nosotros que le gustaría utilizar las funciones de mono-específicos ... –

41

Mientras que un cheque de tiempo de ejecución es probablemente preferible, con el compilador de Mono, el definido previamente __MonoCS__ constante es útil, por ejemplo:

#if __MonoCS__ 
// Code for Mono C# compiler. 
#else 
// Code for Microsoft C# compiler. 
#endif 
+1

Sólo asegúrese de que ningún desarrollador agrega __ __ MonoCS a su proyecto de Visual Studio construir propiedades y luego se pregunta por qué el compilado el código no funciona como se esperaba! : -/ – Stewart

+7

Esta es la respuesta correcta y debe marcarse como tal. – BSalita

+0

Estoy de acuerdo con @BSalita esta es la respuesta correcta (y funciona). En mi caso particular, necesitaba agregar una interfaz a un espacio de nombres. La versión Mono aún no la tiene. –