È possibile avere file di configurazione separato, ma dovrete leggerlo "manualmente", la ConfigurationManager.AppSettings["key"]
leggerà solo la configurazione della corsa di assemblaggio.
Supponendo che stai utilizzando Visual Studio come IDE, puoi fare clic con il pulsante destro del mouse sul progetto desiderato → Aggiungi → Nuovo elemento → File di configurazione dell'applicazione
Questo verrà aggiunto App.config
alla cartella del progetto, inserisci le tue impostazioni nella <appSettings>
sezione. Nel caso in cui non si utilizzi Visual Studio e si aggiunga il file manualmente, assicurarsi di dargli tale nome: DllName.dll.config , altrimenti il codice seguente non funzionerà correttamente.
Ora per leggere da questo file hanno una tale funzione:
string GetAppSetting(Configuration config, string key)
{
KeyValueConfigurationElement element = config.AppSettings.Settings[key];
if (element != null)
{
string value = element.Value;
if (!string.IsNullOrEmpty(value))
return value;
}
return string.Empty;
}
E per usarlo:
Configuration config = null;
string exeConfigPath = this.GetType().Assembly.Location;
try
{
config = ConfigurationManager.OpenExeConfiguration(exeConfigPath);
}
catch (Exception ex)
{
//handle errror here.. means DLL has no sattelite configuration file.
}
if (config != null)
{
string myValue = GetAppSetting(config, "myKey");
...
}
Dovrai anche aggiungere un riferimento allo spazio dei nomi System.Configuration per rendere disponibile la classe ConfigurationManager.
Quando costruisci il progetto, oltre alla DLL avrai anche il DllName.dll.config
file, questo è il file che devi pubblicare con la stessa DLL.
Quanto sopra è un codice di esempio di base, per coloro che sono interessati a un esempio in scala reale, fare riferimento a questa altra risposta .
string exeConfigPath = this.GetType().Assembly.Location;
in qualcosa del tipo:string exeConfigPath = @"C:\MyFolder\DllFolder\ExeName.exe";