2009-02-03 8 views
91

Je sais que je peux ouvrir des fichiers de configuration liés à un assembly avec la méthode ConfigurationManager.OpenExe(exePath) statique, mais je veux juste ouvrir une configuration qui n'est pas liée à un assemblage. Juste un fichier de configuration .NET standard.Chargement de fichiers de configuration personnalisés

Répondre

204

les articles postés par Ricky sont très bons, mais malheureusement ils ne répondent pas à ta 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); 
+0

@Oliver Par 'whatYouLikeExtension', voulez-vous dire que vous * devez * avoir * quelque chose * après' config.'? – Svish

+1

@Svish: Je ne me souviens plus. As-tu essayé? – Oliver

+3

@Oliver Got autour pour essayer maintenant, et semble bien fonctionner sans :) – Svish

6

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; 
    } 
} 

, puis la récupération de valeurs par:

// retrieve appSettings node 

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

Code Inaccessible détecté après 'throw new Exception ("Aucun fichier de configuration trouvée." , e); – Oybek

+0

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

+7

pourquoi utiliser XML quand vous avez de si bonnes classes de la bibliothèque .Net. Je ne suggère pas d'utiliser cela, pauvre sur le design. Que faire ensuite? implémenter une classe de chaînes différente ... considérez ceci. – Yuki