2008-11-30 14 views

Répondre

56

Le compilateur Mono définit __MonoCS__

MAIS, MAIS, MAIS, le point entier de Mono est que vous pouvez prendre un ensemble qui vous avez construit avec VS et l'exécuter sur Mono, ou vice versa.

Il me semble que si vous avez besoin de différences entre Mono et MS.NET, vous devez prendre ces décisions au moment de l'exécution.

La méthode standard pour détecter Mono au Runtime est:

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

Comprendre le point mais Mono a une beaucoup de rattrapage à faire par endroits, et il n'y a aucun point pénalisant la construction MS ... Bon conseil si Merci –

+0

OJOI, quelles lacunes particulières dans Mono travaillez-vous? –

+2

Un cas d'utilisation est l'interface graphique GTK # sur Mono et Windows.Forms GUI sur .Net. –

0

Il est clair qu'il ya des moments où le code sur une plate-forme sera différent de code sur une autre et que vous souhaitez peut-être faire à l'exécution ou peut-être compiler le temps. Parfois, cela ne peut pas être fait au moment de l'exécution.

Par exemple:

Mono est utilisé comme base de Ios, Android, et les kits d'outils Mac Xamarin. Alors que ceux-ci ont beaucoup de code commun, ils ont aussi des classes qui n'apparaissent que sur une seule plate-forme. En développant avec ces kits d'outils, vous développez des packages natifs qui ne sont pas échangeables entre plates-formes.

Un cas simple est les noms de fichiers et les chemins. Ceux-ci diffèrent sur chaque plate-forme. Je pourrais juste avoir une petite condition pour charger les cordes différemment sur chaque plate-forme. Certaines plates-formes ont des noms de fichiers spécifiques à certains cas.

Ce serait bien s'il y avait un peu de code qui retourne la plate-forme actuelle - que ce soit UNIX, iOS, Mac, X86, X64, XBox etc ....

+1

.NET a déjà des abstractions pour gérer les chemins de manière portative. 'System.IO.Path.DirectorySeparatorChar', par exemple. Donc, pas besoin de construire votre propre logique pour gérer les différentes possibilités de l'OS pour ce cas. –

Questions connexes