IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] Lire dans le fichier App.config


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Points : 49
    Points
    49
    Par défaut [C#] Lire dans le fichier App.config
    Bonjour,
    je suis sur le Framework 2.0 et avec VS 2008.

    Voici mon fichier Xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="mac" value="0013210484C5"/>
      </appSettings>
    </configuration>

    Et une ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string _mac = ConfigurationManager.AppSettings["mac"];
    Mon problème est que "_mac" reste à null. Je n'arrive pas à lire mon fichier app.config. Je ne voie pas mon erreur

    Avez-vous une solution?

    Merci d'avance

    PS:Savez-vous si le Framework gère l'écriture dans le fichier de config?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Hmm... votre code me semble bon, et le XML bien formé.

    Je soupçonne que lors de l'execution de votre application, le fichier de configuration censé être utilisé n'est pas ... utilisé (non, sans blague?) car ... pas "trouvé".

    Exemple : si votre application est :

    C:\MesDevs\MonProjet\MonAppli.exe

    êtes vous sûr que vous avez bien produit :

    C:\MesDevs\MonProjet\MonAppli.exe.config

    ... avec la clé en question, suite au build ?

    'HTH

    Citation Envoyé par JOBiJOBa3 Voir le message
    Bonjour,
    je suis sur le Framework 2.0 et avec VS 2008.

    Voici mon fichier Xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="mac" value="0013210484C5"/>
      </appSettings>
    </configuration>

    Et une ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string _mac = ConfigurationManager.AppSettings["mac"];
    Mon problème est que "_mac" reste à null. Je n'arrive pas à lire mon fichier app.config. Je ne voie pas mon erreur

    Avez-vous une solution?

    Merci d'avance

    PS:Savez-vous si le Framework gère l'écriture dans le fichier de config?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par JOBiJOBa3 Voir le message
    [...]
    PS:Savez-vous si le Framework gère l'écriture dans le fichier de config?
    Oui.

    Utilisez la méthode Save sur System.Configuration.ConfigurationSection et la méthode RefreshSection sur System.Configuration.ConfigurationManager.

    Cf. la doc du framework .NET ; notez leurs remarques relatives aux pré-requis pour les droits en écriture pour la méthode Save.

    'HTH

  4. #4
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    Je n'est pas compris. Mon xml est dans "c:\...\monprojet\App.xml"
    et mon setup est dans "c:\...\setup1\Debug\setup1.exe"

    Citation Envoyé par lysiandad Voir le message
    Exemple : si votre application est :

    C:\MesDevs\MonProjet\MonAppli.exe

    êtes vous sûr que vous avez bien produit :

    C:\MesDevs\MonProjet\MonAppli.exe.config

    ... avec la clé en question, suite au build ?

    'HTH

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Ah, Ok, bien.

    Vous ne nous avez donc pas tout dit...

    Nous avons beaucoup de possibilités, certes, je le reconnais, avec le framework et/ou Visual Studio de changer les comportements par défauts des librairies du framework, mais je recommande toujours de commencer par s'en tenir au valeurs/actions par défaut.

    Dans votre cas, ce n'est pas tout à fait le cas : je vous propose donc de renommer votre "...monprojet\App.xml" en "...\monprojet\App.config".

    ... et de retester.

    'HTH

    Citation Envoyé par JOBiJOBa3 Voir le message
    Je n'est pas compris. Mon xml est dans "c:\...\monprojet\App.xml"
    et mon setup est dans "c:\...\setup1\Debug\setup1.exe"

  6. #6
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    Mon fichier est bien en App.config mais le problème persiste.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Quelle est la nature du projet qui contient cet App.config ?

    Class Library ? Application Console ? Application Winforms ? Service Windows ? etc.

    Citation Envoyé par JOBiJOBa3 Voir le message
    Mon fichier est bien en App.config mais le problème persiste.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    C'est un Class Library. Cela change quoi?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Eh bien vous avez la solution (puisqu'on connait la source du problème, maintenant) :

    Une Class Library n'est qu'une ... class library (!)

    Or, la configuration d'un "hote" en .NET (p.ex. une application console ou Winforms ou Service Windows (.exe), etc) va être cherchée par le runtime .NET dans l'assembly executable "principal" de cet "hote" ... en général, un ".exe" (*) ;

    ... dans votre cas, cela (i.e., la recherche du <nom-d-assembly-principal>.config) ne concerne pas <votre-class-library>.dll.config mais concerne en fait le <votre-application-utilisatrice-de-la-class-library>.exe.config

    En clair, l'<appSettings> et votre clé contenue dedans doit se trouver dans l'App.config du projet "application" ; si vous avez les sources, c'est l'App.config de votre projet console (ou Winforms, ou etc) ; sinon, si votre lib est utilisée par un logiciel client, c'est la configuration de ce logiciel ... le-logiciel.exe.config.

    Ainsi, l'App.config de votre projet class lib "ne sert à rien" ... c'était pas le bon.

    (*) note : il y a cependant des exceptions a cette "regle" ; pensez par ex aux Web.config pour une appli en site en ASP.NET, où c'est "un peu plus subtil" (la config de l'appli ASP.NET n'est en effet pas cherchée dans ce qui serait inetinfo.exe.config, inetinfo.exe etant le process hote d'IIS...)

    Citation Envoyé par JOBiJOBa3 Voir le message
    C'est un Class Library. Cela change quoi?

  10. #10
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par lysiandad Voir le message
    ... dans votre cas, cela (i.e., la recherche du <nom-d-assembly-principal>.config) ne concerne pas <votre-class-library>.dll.config mais concerne en fait le <votre-application-utilisatrice-de-la-class-library>.exe.config
    Revelation divine ! Une librairie de classe est parametrable, et c'est dans le fichier de conf de l'exe appelant que l'on peut specifier des valeurs...

    J'y avais jamais pensé Pourtant; c'est vrai que par exemple des tas de classes du framework peuvent avoir leur comportement customisé en mettant les sections qui vont bien dans le .config de l'appli. Y'a du refactoring simplificatoire qui m'attend après les vacances

    lysiandad, merci !
    ಠ_ಠ

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Revelation divine ! Une librairie de classe est parametrable, et c'est dans le fichier de conf de l'exe appelant que l'on peut specifier des valeurs...

    J'y avais jamais pensé Pourtant; c'est vrai que par exemple des tas de classes du framework peuvent avoir leur comportement customisé en mettant les sections qui vont bien dans le .config de l'appli. Y'a du refactoring simplificatoire qui m'attend après les vacances

    lysiandad, merci !
    Euh... ben oui... Mais le sarcasme est un peu cavalier dans la mesure où c'est pour notre ami JOBiJOBa3 que l'information n'était vraisemblablement pas si évidente à appréhender depuis la doc .NET FX.

    J'ai simplement pensé que je pouvais essayer de lui donner un phrasé personnalisé, plutôt que de de le renvoyer brutalement vers toute la littérature de ladite doc, ou la paraphraser maladroitement, vu le volume non négligeable de détails qu'elle contient... bah, si j'en ai fais sourire certains, c'est déjà ça... *shrugs*

    Et JOBiJOBa3 : où en êtes vous, au fait ?

  12. #12
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par lysiandad Voir le message
    Euh... ben oui... Mais le sarcasme est un peu cavalier
    Mais je ne suis pas sarcastique du tout ! Je bosse sur DotNet depuis deux ans maintenant, et je n'avais jamais pensé à ce que vous avez proposé. La plupart du temps, je passe sur ce forum pour depanner des gens moins expérimentés que moi, j'apprécie donc énormément des contributions comme celles-ci qui éclairent ma compréhension du framework.

    Je réitère, donc : merci !
    ಠ_ಠ

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 217
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Mais je ne suis pas sarcastique du tout ! Je bosse sur DotNet depuis deux ans maintenant, et je n'avais jamais pensé à ce que vous avez proposé. La plupart du temps, je passe sur ce forum pour depanner des gens moins expérimentés que moi, j'apprécie donc énormément des contributions comme celles-ci qui éclairent ma compréhension du framework.

    Je réitère, donc : merci !
    Oh ! Maintenant, je me sens vraiment confus, pour le coup, alors...

    Meh, my bad. J'ai probablement eu deux ou trois secondes de paranoia, et c'est arrivé au moment de relire ce fil, ou je ne sais quoi... rapport à ma journée, sans doute.... pfft

    Ben, content que ma paraphrase aide encore plus, alors ! ...

  14. #14
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    Merci pour tes explications lysiandad et désolé pour le temps de réponse(vacances).
    J'ai tout simplement déplacé mon App.config dans mon projet Winform et mon code fonctionne normalement.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2012, 21h55
  2. Réponses: 5
    Dernier message: 28/08/2009, 08h58
  3. [VS C#] ajouter signe supérieur dans mon fichier app.config
    Par grinder59 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 10/07/2009, 20h54
  4. Réponses: 2
    Dernier message: 04/06/2006, 18h19
  5. Réponses: 9
    Dernier message: 04/05/2006, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo