Meilleur auteur de réponses
Pourquoi le code #IF DEBUG est exécuté dans la version EXE de l'application ?

Question
-
Bonjour,
Je travaille en VB.NET avec VS2010.
Je crois que je n'ai pas compris toutes les subtilités des modes de compilation.
Je croyais que mettre du code entre #IF DEBUG, c'était dire : Tu t'exécutes quand je debug le programme, mais pas lorsqu'il est sous sa forme exe.
Or, le code ci-dessous s'exécute malgré que l'application a été installée et déployée avec le mécanisme ClickOnce.
#If DEBUG Then Dim ProjetBin As String = My.Application.Info.DirectoryPath m_cheminprojet_DEBUG = ProjetBin.Substring(0, ProjetBin.LastIndexOf("\bin")) #End If
Quelque part j'ai eu la chance que ce code provoque une erreur sur l'instruction .Substring ou LastIndexOf renvoi une valeur nulle, sinon je n'aurai pas détecté l'exécution du bloc #IF DEBUG en exe.
C'est en plaçant ce code dans un bloc Try Catch, sans traitement particulier que j'ai compris qu'il s'exécutait, puisque j'ai évité l'erreur.
Ma question est donc :
Comment compiler en vue de déployer l'application et que les portions de code #IF DEBUG ne s'exécute pas ?
Merci.
Jean-Noël Falquet
Réponses
-
Bonjour,
C'est normal, dans votre solution vous devez avoir au minimum deux modes de configuration "debug" et "release" de configurés (solution standard). Dans la version "debug" votre option de compilation "DEBUG" est activée, dans le mode "release" elle ne l'est pas.
Dans qu'on développe on reste en mode "debug" afin de pouvoir justement exécuter le code se trouvant dans vos conditions de compilation.
Lorsque l'on doit compiler pour le déploiement ou pour une version finale, on passe en "release" et on recompile l'application. Comme "DEBUG" n'est pas défini tout le code dans vos conditions de compilation ne seront pas incluses.
Normalement votre barre d'outils vous fourni une combobox avec la liste des configurations disponibles, vous permettant de passer d'une configuration à l'autre directement.
A savoir que vous pouvez créer votre propres configurations, et définir les options de compilation de chaque projet pour chaque configuration.
Cordialement,
Yan Grenier
- Proposé comme réponse Yan Grenier - MTFC mercredi 5 décembre 2012 15:08
- Marqué comme réponse JN Falquet mercredi 5 décembre 2012 15:46
-
Merci Yan,
Effectivement dans ma solution les projets sont configurés encore en Debug.
J'ai cru que, dans l'onglet compiler du projet, le fait de définir le combobox "compilation" sur release suffisait, car cela désactive la case à cocher DEBUG dans les options avancées. Cette action n'est donc pas prioritaire sur les options du gestionnaire de compilation.
En tout cas merci, j'ai compris maintenant.
Salutations.
Jean-Noël Falquet
- Marqué comme réponse JN Falquet mercredi 5 décembre 2012 16:02
Toutes les réponses
-
Bonjour,
C'est normal, dans votre solution vous devez avoir au minimum deux modes de configuration "debug" et "release" de configurés (solution standard). Dans la version "debug" votre option de compilation "DEBUG" est activée, dans le mode "release" elle ne l'est pas.
Dans qu'on développe on reste en mode "debug" afin de pouvoir justement exécuter le code se trouvant dans vos conditions de compilation.
Lorsque l'on doit compiler pour le déploiement ou pour une version finale, on passe en "release" et on recompile l'application. Comme "DEBUG" n'est pas défini tout le code dans vos conditions de compilation ne seront pas incluses.
Normalement votre barre d'outils vous fourni une combobox avec la liste des configurations disponibles, vous permettant de passer d'une configuration à l'autre directement.
A savoir que vous pouvez créer votre propres configurations, et définir les options de compilation de chaque projet pour chaque configuration.
Cordialement,
Yan Grenier
- Proposé comme réponse Yan Grenier - MTFC mercredi 5 décembre 2012 15:08
- Marqué comme réponse JN Falquet mercredi 5 décembre 2012 15:46
-
Merci Yan,
Effectivement dans ma solution les projets sont configurés encore en Debug.
J'ai cru que, dans l'onglet compiler du projet, le fait de définir le combobox "compilation" sur release suffisait, car cela désactive la case à cocher DEBUG dans les options avancées. Cette action n'est donc pas prioritaire sur les options du gestionnaire de compilation.
En tout cas merci, j'ai compris maintenant.
Salutations.
Jean-Noël Falquet
- Marqué comme réponse JN Falquet mercredi 5 décembre 2012 16:02