2008-11-30 8 views

Respuesta

56

compilador El Mono define __MonoCS__

Pero, pero, pero, todo el punto de Mono es que se puede tener una asamblea que se construyen con VS y ejecutarlo en Mono, o viceversa.

Me parece que si necesita tener diferencias Mono vs MS.NET, entonces debe tomar esas decisiones en tiempo de ejecución.

La manera estándar para detectar Mono en tiempo de ejecución es:

bool runningOnMono = Type.GetType ("Mono.Runtime") != null; 
+7

entender el punto, pero tiene un Mono muchas cosas que hacer en algunos lugares, y no tiene sentido penalizar la creación de MS ... Buen consejo, aunque gracias –

+0

JOOI, ¿qué lagunas en Mono estás trabajando? –

+2

Un caso de uso es tener GTK # GUI en Mono y Windows.Forms GUI en .Net. –

0

Está claro que hay momentos en que el código en una sola plataforma será diferente para codificar en otra y es posible que desee hacer esto en tiempo de ejecución o tal vez compilar el tiempo. Algunas veces no se puede hacer en tiempo de ejecución.

Por ejemplo:

Mono se utiliza como base de juegos de herramientas IOS, Android y Mac de Xamarin. Si bien estos tienen muchos códigos comunes, también tienen clases que solo aparecen en una sola plataforma. Al desarrollar con estos kits de herramientas, desarrolla paquetes nativos que no son intercambiables entre plataformas.

Un caso simple es nombres de archivo y rutas. Estos difieren en cada plataforma. Es posible que tenga una pequeña condición para cargar las cadenas de manera diferente en cada plataforma. Algunas plataformas tienen nombres de archivo específicos para cada caso, y otras no.

Sería bueno si había un poco de código que devuelve la plataforma actual - ya sea UNIX, iOS, Mac, X86, X64, XBox etc ....

+1

.NET ya tiene abstracciones para manejar rutas portables. 'System.IO.Path.DirectorySeparatorChar', por ejemplo. Por lo tanto, no es necesario crear su propia lógica para manejar las diferentes posibilidades del sistema operativo para ese caso. –

Cuestiones relacionadas