Dans tous les exemples que j'ai vus de la directive #if du compilateur, ils utilisent "DEBUG". Puis-je utiliser "RELEASE" de la même manière pour exclure du code que je ne souhaite pas exécuter en mode débogage? Le code que je veux entourer avec ce bloc envoie beaucoup de courriels et je ne veux pas les envoyer accidentellement lors des tests.
Non, ce ne sera pas le cas, à moins que vous ne travailliez.
La partie importante ici est ce que DEBUG est vraiment, et c’est une sorte de constante définie que le compilateur peut vérifier.
Si vous vérifiez les propriétés du projet, sous l'onglet Construire, vous trouverez trois choses:
Il n’existe pas de case à cocher, ni de constante/symbole prédéfini portant le nom RELEASE.
Cependant, vous pouvez facilement ajouter ce nom à la zone de texte intitulée Symboles de compilation conditionnelle, mais assurez-vous de définir la configuration du projet sur le mode de publication avant de le faire, car ces paramètres sont définis par configuration.
Donc, à moins que vous ajoutiez cela à la zone de texte, #if RELEASE
ne produira de code sous aucune configuration.
RELEASE
n'est pas défini, mais vous pouvez utiliser
#if (!DEBUG)
...
#endif
Nan.
Dans la configuration de débogage, il existe une constante DEBUG
définie (définie automatiquement par Visual Studio), mais aucune constante de ce type n'est définie pour le mode de publication. Vérifiez les paramètres de votre projet sous build.
Sélectionner [Définir constante DEBUG] sous Projet -> Construire revient à inclure #define DEBUG au début de chaque fichier.
Si vous souhaitez définir une constante RELEASE pour la configuration de la version, accédez à:
Sur mon installation VS (VS 2008), #if RELEASE
ne fonctionne pas. Cependant, vous pouvez simplement utiliser #if !DEBUG
Exemple:
#if !DEBUG
SendTediousEmail()
#endif
Je n'ai jamais vu ça auparavant ... mais j'ai vu:
#if (DEBUG == FALSE)
et
#if (!DEBUG)
Ce travail pour toi?
Vous pouvez utiliser #if(!DEBUG)
à cette fin.
"Pop Catalin" a eu raison. Contrôler la définition en fonction du type de construction offre une grande flexibilité. Par exemple, vous pouvez avoir une configuration "DEBUG", "DEMO" et "RELEASE" dans la même solution. Cela évite le besoin de dupliquer la programmation avec deux solutions différentes.
Donc oui #if RELEASE
ou #if (RELEASE)
fonctionne de la même manière que #if DEBUG
lorsque le symbole de compilation RELEASE Conditional est défini.
Ce qui suit est extrait de "Pop Catalin" post: * Projet Propriétés -> Construire * Sélectionnez le mode de libération * dans la zone de texte Symboles de compilation conditionnels, entrez: RELEASE
Je sais que la question est ancienne, mais il convient de mentionner que vous pouvez créer vos propres configurations en dehors de DEBUG et de RELEASE, telles que TEST ou UAT.
Si ensuite, dans l'onglet Construction de la page des propriétés du projet, définissez les "Symboles de compilation conditionnels" sur TEST (par exemple), vous pouvez ensuite utiliser une construction telle que
#if (DEBUG || TEST )
//Code that will not be executed in RELEASE or UAT
#endif
Vous pouvez utiliser cette construction pour des raisons spécifiques, par exemple différents clients si vous en avez le besoin, ou même des méthodes Web entières par exemple. Nous avons également utilisé cela par le passé, lorsque certaines commandes posaient des problèmes pour un matériel spécifique. Nous avons donc une configuration pour une application déployée sur le matériel X.
Vous pouvez créer vos propres symboles conditionnels au moment de la compilation (le nom de votre choix) . Allez dans la boîte de dialogue "Construire le projet" située dans la boîte de dialogue Propriétés du projet, option de menu : Projet -> [nom du projet] Propriétés. ..
Vous pouvez également les définir "en haut du fichier de code C #". Comme:
#define RELEASE
// or
#undef RELEASE
vous pouvez utiliser le symbole dans une instruction #if:
#if RELEASE
// code ...
#Elif …
// code ...
#endif
// or
#if !RELEASE
// code ...
#endif