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

C# Discussion :

[C#] AppSettingsReader ne marche pas


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut [C#] AppSettingsReader ne marche pas
    Bonjour,

    Ma dll a besoin de variable de configuration qui seront modifier manuellement dans un fichier.
    J'ai créer un fichier app.config que j'ai renommer dans le projet VS2005 en nom_dll.config.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
            <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b7sd54f51934e089" >
                <section name="nom_dll.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b7sd54f51934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <userSettings>
            <nom_dll.Properties.Settings>
                <setting name="DEMANDE" serializeAs="String">
                    <value>toto</value>
                </setting>        
    </nom_dll.Properties.Settings>
        </userSettings>
    </configuration>
    Ensuite, j'ai créer un lanceur pour ma dll, avec le fichier nom_dll.config dans le répertoire de lancement.

    Dans le code de ma dll, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     AppSettingsReader configurationAppSettings = new AppSettingsReader();
    string identifiant = (string)(configurationAppSettings.GetValue("DEMANDE", typeof(string)));
    Lorque je réalise le GetValue, j'ai une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {System.InvalidOperationException: La clé 'DEMANDE' n'existe pas dans la section de configuration appSettings.
       à System.Configuration.AppSettingsReader.GetValue(String key, Type type)}
    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi renommer le fichier app.config ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    J'ai un exécutable c# qui a déjà un fichier app.config dans le meme dossier que ma dll.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Un fichier de config est associé à un exécutable, pas une dll. Comme le dit SaumonAgile en fait tu ne devrais pas renommer app.config qui est le fichier de config de ton appli (il sera renommé par VS automatiquement à la compilation en tonappli.config).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    J'ai renommer le fichier en app.config.
    Dans le répertoire d'exécution, le fichier s'appelle "nom_dll.dll.config".

    J'ai toujours l'exception qui ne trouve pas la chaine dans le fichier, pourquoi ?

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    La clé 'DEMANDE' n'existe pas dans la section de configuration appSettings.
    Utilise la section appSettings dans ton fichier de configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <configuration>
      <appSettings>
        <add key="DEMANDE" value="toto" />
      </appSettings>
    </configuration>

  7. #7
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par Sphax Voir le message
    Un fichier de config est associé à un exécutable, pas une dll.
    Faux. Chaque assembly peut avoir son propre fichier .config.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Personnellement, j'ai déjà rencontré le problème ... et la seule solution que j'ai trouvé c'est de mettre la configuration de ma DLL dans la configuration du lanceur monLanceur.exe.config
    Par contre, j'utilisais

    System.Configuration.ConfigurationManager.AppSettings["MaVariable"]

    Neptune, dans le cas ou tu mets dans le fichier maDLL.dll.config, est ce qu'il ne faut pas utiliser une méthode particulières pour accéder à ce fichier de config là plutot que celui du lanceur ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par binoo Voir le message
    Utilise la section appSettings dans ton fichier de configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <configuration>
      <appSettings>
        <add key="DEMANDE" value="toto" />
      </appSettings>
    </configuration>
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <applicationSettings>
            <Transaction.Properties.Settings>
                <setting name="DEMANDE" serializeAs="String">
                    <value>toto</value>
                </setting>
            </Transaction.Properties.Settings>
        </applicationSettings>
    et j'ai toujours l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La clé 'DEMANDE' n'existe pas dans la section de configuration appSettings

  10. #10
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    ConfigurationManager.AppSettings retourne un NameValueCollection propre à l'assembly dans lequel il est apellé.

  11. #11
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par pegase06 Voir le message
    J'ai essayé : .......
    Normal, tu ne respecte pas la format de la section appSettings. Tu peux crééer toi meme ton propre format dans une section adaptée si tu le désires. Jette un oeil à la classe ConfigurationSection.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par neptune Voir le message
    Normal, tu ne respecte pas la format de la section appSettings. Tu peux crééer toi meme ton propre format dans une section adaptée si tu le désires. Jette un oeil à la classe ConfigurationSection.
    Le format XML a été crée automatiquement par Visual Studio 2005, quand j'ai changé dans les propriétés du projet, paramètres, le champs 'portées' de 'Utilisateur' à la valeur 'Application'.

  13. #13
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par pegase06 Voir le message
    Le format XML a été crée automatiquement par Visual Studio 2005, quand j'ai changé dans les propriétés du projet, paramètres, le champs 'portées' de 'Utilisateur' à la valeur 'Application'.
    Hmm, je ne connaissais pas cela, j'ai rien dit alors. Mais il faudra creuser un peu plus car c'est évident que tu ne peux pas apeller ta clé DEMANDE directement.

    Qu'est ce que l'objet TransactionReplafonnement?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    C'est le nom de l'assembly et du namespace par défaut, le nom de la dll.

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Citation Envoyé par neptune Voir le message
    Faux. Chaque assembly peut avoir son propre fichier .config.
    Au temps pour moi. Ce doit être relativement nouveau (.net 2 ?) car il me semble bien qu'en 1.1 ce n'etait pas possible.

    En cherchant un peu sur google, j'ai trouvé cette manière d'y accéder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AssemblySettings settings = new AssemblySettings();
    string someSetting1 = settings["someKey1"];
    string someSetting2 = settings["someKey2"];

  16. #16
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Peut tu me décrire la manipulation que tu as fait pour que VS te créé cette section automatiquement??

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Sphax Voir le message
    Au temps pour moi. Ce doit être relativement nouveau (.net 2 ?) car il me semble bien qu'en 1.1 ce n'etait pas possible.

    En cherchant un peu sur google, j'ai trouvé cette manière d'y accéder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AssemblySettings settings = new AssemblySettings();
    string someSetting1 = settings["someKey1"];
    string someSetting2 = settings["someKey2"];
    AssemblySettings est introuvable dans mon projet.
    Cette classe n'était pas uniquement pour .NET 1.0 ?

  18. #18
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    @Sphax: ce code que tu décrit permet d'accéder aux settings du fichier .settings j'imagine. Mais probablement pas cette construction étrange d'appSettings.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par neptune Voir le message
    Peut tu me décrire la manipulation que tu as fait pour que VS te créé cette section automatiquement??
    Propriétés du projet, onglet 'paramètres', lien 'créer un fichier de paramètres par défaut', j'ai rempli le nom, le type, la porté et la valeur du fichier dans le tableau .

  20. #20
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par pegase06 Voir le message
    Propriétés du projet, onglet 'paramètres', lien 'créer un fichier de paramètres par défaut', j'ai rempli le nom, le type, la porté et la valeur du fichier dans le tableau .
    Et bien ca créé un fichier .settings et ca n'ajoute rien dans appSettings du fichier .config! Je comprend pas ton problème du coup.

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 12h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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