2010-09-05 22 views
3

Je suis en train de retirer une chaîne d'héritage des sections AppSetting (VS2010 C#)appsettings imbrications avec l'attribut de fichier

Compte tenu de cette,

Base.config

<appSettings> 
    <add key="basekey" value="basevalue"/> 
</appSettings> 

Derived.config

<appSettings file="Base.config"> 
    <add key="derivedkey" value="derivedvalue" /> 
</appSettings> 

App.config

<configuration> 
    <appSettings file="Derived.config"> 
     <add key="mykey" value="myvalue" /> 
    </appSettings> 
</configuration> 

Cette ligne:

ConfigurationManager.AppSettings["derivedkey"] 

throws Exception:

Attribut non reconnu 'fichier'. Notez que les noms d'attribut sont sensibles à la casse. (... \ line Derived.config 1)

Il semble que App.config peut avec succès "fichier" vers Derived.config, mais Derived.config est incapable de "fichier" vers Base.config parce que "fichier" devient soudainement un attribut inconnu.

C'est un peu circulaire/déroutant pour moi puisque l'attribut "file" dans App.config doit être reconnu avec succès pour atteindre Derived.config, où le même attribut "file" est soudainement inconnu.

+0

J'ai le même problème. Avez-vous déjà compris cela? – jonperl

+0

@jonperl Cela fait quelques mois mais pour mémoire, je pense que c'est simplement une limitation avec le lecteur de configuration. Malheureusement, j'ai fini par restructurer mes fichiers de configuration avec la limitation en tête. – with

+0

J'ai fait la même chose. – jonperl

Répondre

2

Ceci n'est simplement pas autorisé. Vous ne pouvez pas spécifier un autre fichier AppSetting externe dans le premier fichier AppSetting externe.

+0

Vous pouvez également utiliser l'attribut configSource au lieu du premier attribut de fichier qui fonctionnera pour vous je suppose. La seule limitation est que vous ne pouvez pas accéder à un dossier supérieur avec l'attribut configSource. – Oleg