5

Vorrei leggere una parte dello appSettings della mia applicazione console da un file di configurazione esterno denominato, ad esempio, secrets.config, mentre il resto di esso mi piacerebbe leggere dal app.config.Leggere parte di appSettings da un file di configurazione esterno

Attualmente, ho questo set up ma sembra che non stia leggendo da secrets.config e non mi sta nemmeno raccontando della mancata lettura.

Nel mio app.config

<appSettings file = "secrets.config"> 
    <add key = "Foo" value = "Bar" /> 
</appSettings> 

In secrets.config, che si trova nella stessa cartella app.config

<appSettings> 
    <add key = "Secret" value = "Tiger" /> 
</appSettings> 

Nel mio codice

var secret = ConfigurationManager.AppSettings["Secret"]; 

// secret turns out to be null 
+0

Eventuali duplicati di [ConfigurationManager.AppSettings usano un altro file di configurazione] (http://stackoverflow.com/questions/16425407/configurationmanager-appsettings -use-another-config-file) –

+1

Hmm, scusa, ho appena realizzato che stai già seguendo uno degli approcci descritti in una risposta su Q. –

risposta

2

Si scopre che stavo scrivendo il percorso del file esterno come percorso errato.

Dalla documentazione on this page:

Il percorso specificato è relativo al file di configurazione principale. Per un'applicazione Windows Form, questa sarebbe la cartella binaria (come/bin/debug), non la posizione del file di configurazione dell'applicazione. Per le applicazioni Web Form, il percorso è relativo alla root dell'applicazione, dove si trova il file web.config.

Ho cambiato il percorso per quanto segue al ha funzionato:

<appSettings file = "..\..\secrets.config"> 
</appSettings> 
+1

La stessa cosa ha funzionato per me. Se l'app.SECRETS.config è adiacente a app.config. cioè '' –

+0

Un po 'in ritardo per la festa, ma avresti potuto farlo funzionare senza modificare il percorso istruendo Visual Studio a copiare il file in la cartella di output su build. Ciò avviene facendo clic con il pulsante destro del mouse in Esplora soluzioni> Proprietà, quindi Copia nella directory di output = Copia se più recente o Copia sempre. –