J'ai besoin d'un commutateur de compilation conditionnelle qui sait si je compile pour l'exécution mono ou MS .NET. Comment puis-je faire ceci?Comment puis-je conditionnellement compiler mon C# pour Mono vs Microsoft .NET?
Répondre
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;
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 ....
.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. –
- 1. Incorporation: mono vs lua
- 2. DotGNU vs Mono
- 3. compiler le code c vs 2005
- 4. Réflecteur .NET pour Mono
- 5. Comment formater conditionnellement une chaîne dans .Net?
- 6. Microsoft Sync Framework vs WCF
- 7. Comment autoriser mon programme .net à compiler du code C# en cours d'exécution?
- 8. Performance: compilez VS, Exécuter en Mono sous Windows et Linux
- 9. Echec mono/invoke C#
- 10. Redistribution et utilisation du compilateur CS.exe (C#) pour mon application
- 11. Tutoriel Mono C#?
- 12. Utilisation des assemblys de Microsoft dans Mono Runtime
- 13. Différences portables .Net et MONO
- 14. Bibliothèque parallèle CCR vs Task de Microsoft
- 15. Mono - fichier manquant gnome-sharp au momment pour compiler l'application exemple gnome
- 16. Compiler le projet 32 bits VS 2003 en 64 bits
- 17. Mono C# services web
- 18. vs Chaîne dans .NET
- 19. Comment compiler Qt 4.5.1 sous Windows XP pour WinCE?
- 20. Bibliothèque client Microsoft AJAX vs jQuery
- 21. Performance de .Net 2.0 vs .Net 3.5
- 22. Compiler C++ sur FTP
- 23. Dev C++ pour compiler le fichier source C
- 24. sqlite, mono, plateforme croisée C#
- 25. Comment: compiler des fichiers source C++ générés?
- 26. compiler C++ en programmes "réels"
- 27. Comment intégrer un interpréteur Perl dans mon programme C# en utilisant Mono sous Linux?
- 28. DevExpress Microsoft Visual C#
- 29. IronPython vs C# pour des projets de petite taille
- 30. Comment compiler un fichier C simple en utilisant GNU C Compiler/gcc & Mobile-Terminal sur l'iPhone?
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 –
OJOI, quelles lacunes particulières dans Mono travaillez-vous? –
Un cas d'utilisation est l'interface graphique GTK # sur Mono et Windows.Forms GUI sur .Net. –