34 votes

Comment puis-je compiler mon C# de manière conditionnelle pour Mono et Microsoft .NET ?

J'ai besoin d'un commutateur de compilation conditionnelle qui sache si je compile pour le runtime mono ou MS .NET. Comment puis-je le faire ?

59voto

Will Dean Points 25866

Le compilateur Mono définit __MonoCS__

MAIS, MAIS, MAIS L'intérêt de Mono est que vous pouvez prendre un assemblage que vous avez construit avec VS et le faire fonctionner avec Mono, ou vice versa.

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

La méthode standard pour détecter Mono au moment de l'exécution est la suivante :

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

1voto

AnthonyLambert Points 4884

Il est clair qu'il y a des cas où le code d'une plate-forme sera différent de celui d'une autre plate-forme et vous pouvez souhaiter le faire au moment de l'exécution ou de la compilation.

Un cas simple est celui des noms de fichiers et des chemins. Ceux-ci diffèrent sur chaque plateforme. Je pourrais juste avoir une petite condition pour charger les chaînes de caractères différemment sur chaque plateforme. Ce serait bien s'il y avait un petit bout de code qui renvoie la plateforme actuelle - que ce soit UNIX, iOS, Mac, X86, X64, XBox etc.....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X