Comment faire une compilation différente entre Debug et Release?
Je suis un débutant en C#, et que vous rencontrez un problème lors de la compilation d'un projet C#. C'est à propos du journal de débogage en Debug et Release modes.
Je veux que la fonction log en mode Debug, mais ne l'appelle pas en mode Release, prenant en compte la performance compte.
Je sais en C/C++, c'est facile à faire:
//this is C/C++ sample, not C#
#ifdef DEBUG
#define DebugLog(CString,__VA_ARGS__) LogFunction(CString,__VA_ARGS__)
#else
#define DebugLog
#endif
Au-dessus de code C/C++, le DebugLog() est compilé et appelé en mode Debug, mais pas compilé ou appelé en mode de diffusion, de sorte que la performance peut être assuré.
Est-il de toute façon en C# qui fonctionne comme ci-dessus en C/C++ codes?
source d'informationauteur McArthor Lee
Vous devez vous connecter pour publier un commentaire.
L'équivalent est le [Conditionnel] attribut sur une méthode. Comme ceci:
Dans la version Release (avec DEBUG pas définie), à la fois la méthode et les appels à la méthode sont supprimés par le compilateur. Avant de vous ré-inventer la roue, assurez-vous de consulter le Debug et Trace des classes dans le .NET framework, ils le font déjà. Et ont beaucoup de flexibilité pour rediriger le debug/suivi de l'info.
En C#, vous pouvez faire
Voici la la documentation de référence pour la
#if
directive.Vous pouvez faire la même chose en C#. Dans les propriétés du projet, vous pouvez définir une compilation conditionnelle symbole comme
DEBUG
. En fait, je pense que Visual Studio va le faire par défaut lorsque vous créez un projet - ajout d'unDEBUG
drapeau lorsque le projet est en mode de Débogage, et de supprimer l'indicateur lorsque vous basculez sur le mode de sortie. Cela peut être configuré dans les Propriétés du Projet->onglet créer. Vous pouvez également ajouter vos propres drapeaux pour des choses comme la plate-forme de code spécifique. LePocket_PC
drapeau était un célèbre un pour faire de la vieille école, Windows Mobile, le développement sur le .NET Compact Framework.Avec cela, vous pouvez ajouter le pré-processeur directives comme ceci:
Autre méthodologie, peut inclure un "Conditionnel" attribut comme
Plus d'informations peuvent être trouvées ici, dans MSDN