J’ai besoin de comstackr deux fois une bibliothèque de classes pour Mono sur Mac et .NET sur PC. Je souhaite apporter quelques modifications mineures, mais j’espérais scinder le code à l’aide d’une directive de compilation. Aucune suggestion?
Eh bien, vous pouvez certainement utiliser
#if MONO
puis comstackr avec
gmcs -define:MONO ...
(Ou mettez-le dans votre configuration de construction Mono, bien sûr. Cela dépend vraiment de la manière dont vous construisez votre bibliothèque.)
… que cherchez-vous au-delà de cela?
Bien qu’une vérification à l’exécution soit probablement préférable, avec le compilateur Mono, la constante __MonoCS__
prédéfinie est utile, par exemple :
#if __MonoCS__ // Code for Mono C# comstackr. #else // Code for Microsoft C# comstackr. #endif
La méthode préférée consiste à utiliser la détection d’exécution, car cela permet d’utiliser les mêmes assemblages sur l’une ou l’autre des plateformes:
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"); } }