129 votes

Chargement des fichiers de configuration personnalisés

Je sais que je peux ouvrir les fichiers de configuration qui sont liés à un assemblage avec la méthode statique. ConfigurationManager.OpenExe(exePath) mais je veux juste ouvrir une configuration qui n'est pas liée à un assemblage. Il s'agit simplement d'un fichier de configuration .NET standard.

264voto

Oliver Points 19006

Les articles postés par Ricky sont très bons, mais malheureusement ils ne répondent pas à votre question.

Pour résoudre votre problème, vous devriez essayer ce morceau de code :

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

Si vous avez besoin d'accéder à une valeur dans la configuration, vous pouvez utiliser l'opérateur d'indexation :

config.AppSettings.Settings["test"].Value;

1 votes

@Oliver By whateverYouLikeExtension Vous voulez dire que vous doit ont quelque chose après config. ?

5 votes

@Oliver J'ai pu essayer maintenant, et cela semble fonctionner correctement sans :)

0 votes

@Oliver comment puis-je écrire dans AppSettings de cette configuration. Le message "Cannot access protected internal indexer" apparaît maintenant.

8voto

Otávio Décio Points 44200

Le fichier de configuration est juste un fichier XML, vous pouvez l'ouvrir par :

private static XmlDocument loadConfigDocument()
{
    XmlDocument doc = null;
    try
    {
        doc = new XmlDocument();
        doc.Load(getConfigFilePath());
        return doc;
    }
    catch (System.IO.FileNotFoundException e)
    {
        throw new Exception("No configuration file found.", e);
    }
    catch (Exception ex)
    {
        return null;
    }
}

et de récupérer les valeurs par la suite :

    // retrieve appSettings node

    XmlNode node =  doc.SelectSingleNode("//appSettings");

0 votes

Code inaccessible détecté après throw new Exception("No configuration file found.", e); .

0 votes

Je vais enlever le retour null, il ne sera pas vraiment atteint.

8 votes

Pourquoi utiliser le XML alors que la bibliothèque .Net offre d'excellentes classes. Je ne suggérerais pas d'utiliser ceci, c'est une mauvaise conception. Quoi ensuite ? Implémenter une classe de chaîne différente... considérez ceci.

5voto

Yuki Points 408

4voto

Ricky AH Points 2366

Si vous souhaitez approfondir ce sujet, consultez cette série d'articles dans codeproject :

  1. Lever le voile sur les mystères de .NET 2.0

  2. Décoder les mystères de .NET 2.0 Configuration

  3. Percer les mystères de .NET 2.0 Configuration

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X