2015-12-23 14 views
7

Sto cercando di eseguire del codice nella finestra interattiva C# di VS2015 che utilizza una stringa di connessione memorizzata nel file app.config di una DLL che sto usando la funzione #r.Accesso al file di configurazione dalla finestra interattiva C#

Se guardo nello ConfigurationManager c'è una stringa di connessione, ma è diverso da quello che deve fare riferimento da un altro file di configurazione.

+2

'ConfigurationManager' accessi app.config di eseguire l'assemblaggio. Aggiungi sempre stringhe di connessione che la tua applicazione accede ad app.config di esecuzione dell'assembly. – Marshal

risposta

0

Se ciò che si desidera è caricare esplicitamente la configurazione per un assembly specifico e accedervi esplicitamente, è possibile utilizzare OpenExeConfiguration method di ConfigurationManager class.

Prendete un assemblaggio test.dll con questo file di configurazione test.dll.config:

<configuration> 
    <connectionStrings> 
    <add 
     name="MyConnectionString" 
     connectionString="my connection string" 
     providerName="System.Data.SqlClient" 
    /> 
    </connectionStrings> 
</configuration> 

È cam caricare il file di configurazione in questo modo:

> #r "c:\temp\test.dll" 
> #r "System.Configuration" 
> using System.Configuration; 
> ConfigurationManager.OpenExeConfiguration(@"c:\temp\test.dll").ConnectionStrings.ConnectionStrings["MyConnectionString"].ConnectionString 
"my connection string" 
+0

Questo ottiene i dettagli di configurazione ma non lo unisce con le impostazioni di configurazione del codice che sto chiamando riferimenti. Devo o unire le impostazioni di configurazione con le impostazioni degli assembly in esecuzione o devo modificare il file di configurazione che sta utilizzando Roslyn. Non so dove sia ... –

+0

"Roslyn" non ha nulla a che fare con. "Roslyn" è il compilatore e il caricamento della configurazione è una funzione di runtime. –

+0

Ecco perché ho detto esplicitamente. Si potrebbe provare ad iniettare la configurazione da quel file nella configurazione caricata 'System.Configuration.ConfigurationManager.GetSection (" yoursection ")'. Ma questo non funzionerà se quella configurazione è di sola lettura. Oppure puoi prendere csi.exe e csi.exe.config e aggiungere la tua configurazione. –