#if(DEBUG) ......Code...... #else ......Code...... #endif I have some code like this. If my application is running in Debug mode it should execute the #if(DEBUG) part, if it is running in Release mode it should execute the #else part. However, it is only executing the #if(DEBUG) part no matter which mode it is running in.Am using WPF application with VS2010Can anyone help me?
5 Réponses :
Je suppose que dans vos propriétés de projet, sous la construction, vous avez vérifié Essayez de définir le mode de configuration sur Si Donc deux choses à faire. Vérifiez la constante dans les options sous le mode de sortie et recherchez une constante définie manuellement. Ce devrait être l'un de ceux-ci. P> Définir la constante de débogage code>. P>
Relâchez CODE> et exécutez votre application à nouveau. Par défaut pour
Libération code> est que la constante code> de débogage code> n'est pas définie, si vous n'avez pas altéré si bien sûr;) p>
Définir la constante de débogage code> est pas sur vérifié, cela signifie que vous avez un
#define debug code> caché quelque part. P>
Son problème est que débogage code> est exécutant, seulement tout le temps.
Oui. Il est B> exécutant car la constante de débogage est définie dans les paramètres du projet. Je suppose qu'il croit que cela ne devrait pas être exécuté à moins que ne soient explicitement définis #define débogage lui-même, mais il devra être exécuté en mode de libération, ou décochez cette option pour celui-ci à pas B> Exécuter. Lisez ma réponse à nouveau ...
Le OP ne savait pas que la constante doit être définie. Sinon, le sujet ne serait pas le prétraiteur en C # ne fonctionne pas i>. Ensuite, ce serait Vous ne pouvez pas savoir où la constante de débogage est définie i>. Fondamentalement, la seule réponse à laquelle chacun peut donner est de lui assurer que la constante est définie quelque part afin qu'il puisse le rechercher, de l'avoir envoyé, envoyez-moi le code et recherchez la constante pour lui.
Mais je suppose que nous n'accepterons pas cela, et c'est bien. Nous sommes autorisés à avoir des opinions différentes.
Pourquoi mettez-vous débogué entre parenthèses?
L'utilisation de parens comme celle-ci est légale et non la question ici, aussi étrange qu'elle a l'air. La question peut être le manque d'espace après la directive #if code>.
@Oded - Nope, qui est autorisé aussi.
Pour la configuration de débogage, vos paramètres de projet doivent ressembler à p>
p>
Pour la libération, ils devraient ressembler à ceci p>
p>
Pouvez-vous vérifier que c'est le cas, et laissez-nous savoir si c'est?
Sinon, qu'est-ce qu'il y a pour chaque configuration? P>
J'ai la même chose dans mes paramètres de projet également. Mais il n'est toujours pas exécutant correctement.
Recherchez votre code pour #define code> des instructions, vérifiez l'une d'entre elles définissant
débogage code>. Sinon, essayez de définir votre propre constante de débogage
mydebug code> ou quelque chose, ne le mettez pas dans les paramètres du projet et voyez si votre agence d'autre exécute.
Si quelqu'un a plusieurs env Conférez-la définie dans les symboles de compilation conditionnelle définis, par exemple si vous souhaitez utiliser #if uat code>, assurez-vous que la construction a une uat dans la zone de texte.
Pour une raison quelconque, cela ne fonctionnait pas pour moi, j'ai vérifié Définir la constante de débogage code> en libération, puis non contrôlée et c'est bien maintenant.
Je décochez la possibilité de définir debug code> constante lorsque le projet est en mode de libération. C'est le travail pour moi, merci!
@ Ivan-san: Visual Studio - Par défaut - vous donne deux configurations de construction différentes pour le débogage et la libération, vous ne devriez pas avoir à modifier manuellement des indicateurs pour basculer entre.
Créez un nouveau projet à l'aide de tous les paramètres par défaut et vérifiez que vous pouvez effectuer ce travail comme prévu. Si tel est le cas, votre projet de problème doit être «corrompu» d'une certaine manière, peut-être en définissant la constante de débogage dans la configuration de libération ou en disposant de la configuration du projet de débogage sélectionné pour la configuration de la solution de version. P>
Cela dépend de la manière dont vous créez vos configurations. Par exemple, si vous créez votre configuration et utilisez le débogage ou la libération comme un débogage ou une libération de modèle sera copié dans l'élément de contraintes défini. Il ne changera pas l'élément de contraintes défini (dans le fichier de projet) au nouveau nom de configuration.
Ouvrez le fichier de projet et recherchez les sections de configuration. Assurez-vous que la plate-forme, l'exemple ci-dessous est "PROD" a une entrée dans l'élément définieconstants. Si les directives de pré-compilateur ne fonctionnent pas comme prévu dans le code. P>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PROD|x86'"> <DefineConstants>PROD;TRACE</DefineConstants> <OutputPath>bin\x86\PROD\</OutputPath> </PropertyGroup>
Je suppose que je suppose et dire que votre configuration d'exécution n'est pas précisément comme prévu. Où changez-vous le type de configuration? La barre d'outils standard, le gestionnaire de configuration de la solution Propriétés?
Dans l'IDE, il grise le code dans la section de débogage lorsque vous choisissez le mode de sortie?
Yah il est grisé pour le mode de libération