2011-09-07 13 views
5

Sto provando a lavorare con un file settings.settings nel mio progetto. Ci sono valori che devono essere condivisi tra il file .exe e varie DLL. Preferirei non solo trasmettere questi valori, mi piacerebbe accedervi quando ne ho bisogno, ma ogni progetto imposta i suoi valori con nomi leggermente diversi e quindi non è raggiungibile dagli altri progetti.Configurazione condivisa tra un file .exe e un file .dll

C'è un modo per condividere il contenuto del file app.config tra un file .exe e un .dll utilizzando l'approccio settings.settings? O devo tornare a usare ConfigurationManager per fare questo?

risposta

5

Basta inserire le impostazioni nel file App.config e leggerle dalla tua DLL. In effetti, credo che sia l'unico posto in cui la tua DLL cercherà le impostazioni/config, la configurazione locale per la dll è ignorata.

Ecco un breve esempio per garantire che la DLL non abbia riferimenti forti all'applicazione. Questo codice non è eccezionale ma ti viene l'idea.

private string GetSettingValue(string key) 
    { 
    string executingAssembly = Assembly.GetEntryAssembly().GetName().Name; 
    string sectionName = "applicationSettings/" + executingAssembly 
               + ".Properties.Settings"; 
    ClientSettingsSection section = 
      (ClientSettingsSection)ConfigurationManager.GetSection(sectionName); 

    // add null checking etc 
    SettingElement setting = section.Settings.Get(key); 
    return setting.Value.ValueXml.InnerText; 
    } 

hanno alternativa, un comune dll con le impostazioni condivise e prendere una dipendenza da ogni gruppo che ha bisogno di condividere il config. Questo è molto più pulito.

+0

Ma se ho un'impostazione denominata setting1 che voglio accedere sia al mio .exe che al mio .dll, come faccio ad avere una voce comune? Quello dall'applicazione sarà in applicationSettings/app_name.Properties.Settings e quello dalla dll sarà in applicationSettings/library.Properties.Settings. Come ottengo che accedano allo stesso valore? –

+0

Aggiunto un esempio di codice – TheCodeKing

Problemi correlati