2010-06-04 8 views
6

Siamo una piccola squadra, che lavora a un progetto Web asp.net e al servizio, entrambi i progetti dipendono da una libreria di classi condivisa.Impostazioni di configurazione diverse per sviluppatore per la libreria di classi C#

Ci piacerebbe avere le impostazioni della libreria di classi diverse per sviluppatore (e in seguito per la produzione). Nelle impostazioni sono incluse informazioni sensibili, come password e nomi di host.

Come dovremmo assegnare queste impostazioni?

A meno che non mi sbaglio, le impostazioni web.config/dell'applicazione non sono sufficienti, in quanto non funzionano per la libreria di classi condivise.

ps: Inoltre, alcune variabili devono essere collegate staticamente e il resto (come stringhe di connessione) deve essere dinamico.

+1

Come hai preparato la soluzione? Quale software di controllo sorgente stai usando? –

+0

Stiamo usando svn. Non sono sicuro di cosa intendi con la soluzione, c'è fondamentalmente la soluzione, e con essa abbiamo più progetti, la maggior parte sono librerie di classi, una grande libreria che i progetti: il servizio e i progetti web, dipendono da – user145100

+0

Questo è un po 'simile a quello che abbiamo trovato migliore da usare: (meglio di quanto è stato discusso in questa discussione) http://stackoverflow.com/questions/236412/connection-string-hell-in-net- linq-sql-asp-net – user145100

risposta

2

I file web.config app.config vengono letti da qualsiasi sito Web/app in esecuzione. I.E., i file delle impostazioni delle app nella libreria di classi non vengono utilizzati. per esempio. qualsiasi riferimento a ConfigurationManager.ConnectionStrings ConfigurationManager.AppSettings all'interno della libreria di classi utilizzerà qualsiasi oggetto web.config/app.config definito nell'app che utilizza la libreria di classi e non alcun file .config che potrebbe essere stato configurato all'interno della libreria di classi stessa.

Il modo più semplice per gestire impostazioni diverse per sviluppatore e produzione è avere la configurazione memorizzata in un file diverso, ad es.

<appSettings configSource="Web.appSettings.dev.config"/> 

Ogni dev ha il proprio Web.appSettings.dev.config che non è nel controllo del codice sorgente. Quando nella produzione basta cambiare a:

<appSettings configSource="Web.appSettings.live.config"/> 

Hai solo bisogno di assicurarsi di avere un qualche tipo di modello Web.appSettings.template.config in svn che è il padrone, ma non ha impostazioni in esso e manualmente gestisci assicurandoti che ogni nuova chiave o stringa di connessione aggiunta al modello venga aggiunta anche a ogni file devs e al file di produzione.

+0

Il file "Web.appSettings.dev.config" dovrebbe essere letto sempre con questo nome file? come ho già provato ad aggiungere un file di risorse Settings, e sembra che le librerie di classi NON le leggano. – user145100

+0

Che cosa intendi per "un file di risorse Impostazioni" sto parlando di web.config e del file app.config e di come spostare sezioni diverse come la sezione appSettings o la sezione connectionstrings in file separati. Le librerie di classi leggono le loro impostazioni da qualsiasi app le stia utilizzando. –

+0

Sì, quando ho eseguito il mio appname.exe, ha letto solo appname.exe.config e nessun altro file. Non voglio avere più file di impostazione: appname1.exe.config, appname2.exe.config, web.config. – user145100

Problemi correlati