Vous pouvez avoir un fichier de configuration séparé, mais vous devrez le lire "manuellement", le ConfigurationManager.AppSettings["key"]
ne lira que la configuration de l'assembly en cours d'exécution.
En supposant que vous utilisez Visual Studio comme IDE, vous pouvez cliquer avec le bouton droit sur le projet souhaité → Ajouter → Nouvel élément → Fichier de configuration de l'application
Cela ajoutera App.config
au dossier du projet, mettez vos paramètres là-dedans sous la <appSettings>
section. Si vous n'utilisez pas Visual Studio et n'ajoutez pas le fichier manuellement, assurez-vous de lui donner un tel nom: DllName.dll.config , sinon le code ci-dessous ne fonctionnera pas correctement.
Maintenant, pour lire à partir de ce fichier ont une telle fonction:
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;
}
Et pour l'utiliser:
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");
...
}
Vous devrez également ajouter une référence à l'espace de noms System.Configuration pour que la classe ConfigurationManager soit disponible.
Lors de la construction du projet, en plus de la DLL, vous aurez également un DllName.dll.config
fichier, c'est le fichier que vous devez publier avec la DLL elle-même.
Ce qui précède est un exemple de code de base, pour ceux qui sont intéressés par un exemple à grande échelle, veuillez vous référer à cette autre réponse .
string exeConfigPath = this.GetType().Assembly.Location;
pour quelque chose comme:string exeConfigPath = @"C:\MyFolder\DllFolder\ExeName.exe";