Você pode ter um arquivo de configuração separado, mas precisará lê-lo "manualmente", oConfigurationManager.AppSettings["key"]
ele lerá apenas a configuração do assembly em execução.
Supondo que você esteja usando o Visual Studio como seu IDE, clique com o botão direito do mouse no projeto desejado → Adicionar → Novo item → Arquivo de configuração do aplicativo
Isso adicionará App.config
à pasta do projeto, coloque suas configurações na <appSettings>
seção. Caso você não esteja usando o Visual Studio e adicione o arquivo manualmente, forneça o nome: DllName.dll.config , caso contrário, o código abaixo não funcionará corretamente.
Agora, para ler este arquivo, temos essa função:
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 para usá-lo:
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");
...
}
Você também precisará adicionar referência ao namespace System.Configuration para ter a classe ConfigurationManager disponível.
Ao criar o projeto, além da DLL, você terá DllName.dll.config
arquivo, que é o arquivo que você deve publicar com a própria DLL.
O código acima é de exemplo básico. Para os interessados em um exemplo em grande escala, consulte esta outra resposta .
string exeConfigPath = this.GetType().Assembly.Location;
para algo como:string exeConfigPath = @"C:\MyFolder\DllFolder\ExeName.exe";