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 :

Liaison tardive avec app.config


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut Liaison tardive avec app.config
    Bonjour

    J’ai une classe, inconnue au moment de la compilation, qui est chargée lors de l’exécution. Le programme va chercher les informations dans app.config .

    App.Config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <add key="Assembly" value="CalculNormal" />
    <add key="Classe" value="CalculNormal.CalculN" />
    </appSettings>
    </configuration>
    La classe est chargée comme cela :
    private ICalcul LectureConfig()
    {
    ConfigurationManager.RefreshSection("appSettings");
    string assembly = ConfigurationManager.AppSettings["Assembly"];
    string classe = ConfigurationManager.AppSettings["Classe"];
    ICalcul obj = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(assembly, classe) as ICalcul;
    return obj;
    }
    Cela fonctionne. En changeant le fichier app.config, je change de classe.

    Du moins, si je régénère la solution. Si je change le fichier mais que je lance directement l’exécutable dans \bin\debug, il ne tient pas compte du changement de fichier.

    Des idées ?

    Merci

    Promeneur

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    tu changes le fichier dans bin\debug ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut
    C’est assez étonnant. Une fois la solution régénérée, il se fout du fichier de config, je peux carrément le supprimer, le programme fonctionne quand même. En fait, c’est visiblement à la génération de la solution qu’il se sert du fichier de config pour créer le programme.

    Ce n’est pas ce que je pensais qu’il allait se passer. Pour moi, on pouvait, à la limite, changer le fichier de config pendant l’exécution et faire une vraie liaison tardive. Ce n’est pas ce qui se passe, soit j’ai mal compris, soit mon code est fautif.

    Ce n’est pas important pour mon développement actuel, mon but est de pouvoir changer facilement de couche d’accès aux données sans toucher au code métier, et ce but est atteint. Je peux en effet changer le fichier de config et régénérer la solution, j’ai changé de DAL sans toucher à mon code métier, juste en changeant de fichier config.

    Néanmoins, j’aimerais bien comprendre comment cela fonctionne, au cas où, un jour, j’aurais vraiment besoin de faire de la liaison tardive.

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Tu modifies bien le fichier de config qui se trouve dans bin\debug et pas celui que tu vois dans visual studio ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 206
    Points : 149
    Points
    149
    Par défaut
    Ahhhh ! Je n'avais pas compris que dans bin\debug il changeait le nom du fichier de config (de App.Config à TestLiaisonTardive.exe.config), du coup, effectivement, je n'agissais pas sur le bon fichier !

    Merci à toi , The_badger_man !

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

Discussions similaires

  1. App.config compiler avec l'application?
    Par dtcSearch dans le forum C#
    Réponses: 11
    Dernier message: 05/01/2010, 09h53
  2. problème avec app.config sous vs 2005
    Par eldrad95 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/10/2009, 12h09
  3. Probleme avec app.config
    Par Msysteme dans le forum Visual Studio
    Réponses: 8
    Dernier message: 27/01/2009, 11h00
  4. Problème avec App.config
    Par djorfe dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 13/10/2008, 09h15
  5. [VB.NET] Recuperer un paramettre avec App.Config
    Par Monster77 dans le forum Windows Forms
    Réponses: 21
    Dernier message: 31/12/2007, 14h06

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