Existe-t-il un équivalent de app.config pour les dll? Sinon, quel est le moyen le plus simple de stocker les paramètres / la configuration spécifiques à une bibliothèque (une dll)? La bibliothèque peut être utilisée dans différentes applications.
Réponses
Trop de publicités?Vous pouvez séparer les fichier de configuration, mais vous aurez à le lire "à la main", l' ConfigurationManager.AppSettings["key"]
ne liront que la config de la course de l'assemblée.
Tout d'abord, dans le VS projet clic droit --> Add --> Nouvel élément --> Fichier de Configuration d'Application
Cela va ajouter de la App.config
le dossier de projet, mettre vos paramètres sous <appSettings>
section.
Maintenant, à lire à partir de ce fichier ont cette 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 devez ajouter une référence à System.Configuration de cours.
Lors de la construction du projet, en plus de la DLL, vous devrez DllName.dll.config
de la fie, ainsi, c'est le fichier que vous avez à publier avec la DLL elle-même.
Malheureusement, vous ne pouvez avoir qu'une seule application.fichier de configuration par fichier exécutable, donc si vous avez DLL est lié à votre application, ils ne peuvent pas avoir leur propre application.les fichiers de configuration.
La Solution est:
Vous n'avez pas besoin de mettre de l'Application.fichier de configuration dans la Bibliothèque de classes du projet.
Vous avez mis l'Application.fichier de configuration dans l'application qui est le référencement de votre classe
de la bibliothèque de dll.
Par exemple, disons que nous avons une bibliothèque de classe nommé MyClasses.dll qui utilise l'application.fichier de configuration comme suit:
string connect =
ConfigurationSettings.AppSettings["MyClasses.ConnectionString"];
Maintenant, imaginons que nous avons une Application Windows nommé MyApp.exe qui références MyClasses.dll. Elle contient une Application.config avec une entrée telle comme:
<appSettings>
<add key="MyClasses.ConnectionString" value="Connection string goes
here" />
</appSettings>
OU
Un fichier xml est le meilleur équivalent de l'app.config. Utilisation de xml sérialiser/désérialiser comme nécessaire. Vous pouvez l'appeler ce que vous tous le souhaitez. Si votre config est "statique" et n'a pas besoin de changer, vous pouvez aussi l'ajouter au projet comme un ressource incorporée.
Espérons qu'il donne une Idée
Les fichiers de Configuration sont de portée application, et non de l'assemblée de portée. De sorte que vous aurez besoin de mettre votre bibliothèque de sections de configuration dans chaque fichier de configuration à l'aide de votre bibliothèque.
Cela dit, il n'est pas une bonne pratique pour obtenir la configuration de l'application, le fichier de configuration, spécialement l' appSettings
section, dans une bibliothèque de classe. Si votre bibliothèque a besoin de paramètres, ils devraient probablement être passés comme arguments de méthode dans les constructeurs, les méthodes de fabrique, etc. par celui qui appelle votre bibliothèque. Cela empêche les applications d'appels par erreur de la réutilisation de la configuration des entrées qui ont été prévu par la bibliothèque de classe.
Cela dit, les fichiers de configuration XML sont très utiles, de sorte que le meilleur compromis que j'ai trouvé est d'utiliser des sections de configuration personnalisée. Vous arrivez à mettre votre bibliothèque de configuration dans un fichier XML qui est automatiquement lu et analysé par le cadre et vous éviter d'éventuels accidents.
Vous pouvez en apprendre davantage sur des sections de configuration personnalisée sur MSDN et aussi Phil Haack a un bel article sur eux.
Si vous ajoutez des Paramètres à un projet de Bibliothèque de classes dans Visual Studio (Propriétés du Projet, les Paramètres), il va ajouter une application.fichier de configuration de votre projet avec les userSettings/applicatioNSettings sections, et les valeurs par défaut pour ces paramètres à partir de vos Paramètres.le fichier de paramètres.
Cependant, ce fichier de configuration ne sera pas utilisé lors de l'exécution - au lieu de la bibliothèque de classe utilise le fichier de configuration de son hébergement de l'application.
Je crois que la raison principale pour la génération de ce fichier est de sorte que vous pouvez copier/coller les paramètres dans l'application hôte, le fichier de configuration.
En réponse à la question initiale, j'ajoute généralement le fichier de configuration dans mon projet de test sous forme de lien. vous pouvez ensuite utiliser l'attribut DeploymentItem pour l'ajouter au dossier Out du test.
[TestClass]
[DeploymentItem("MyProject.Cache.dll.config")]
public class CacheTest
{
.
.
.
.
}
En réponse aux commentaires, les assemblages ne peuvent pas être spécifiques à un projet, ils le peuvent et cela offre une grande flexibilité, notamment. lorsque vous travaillez avec des cadres de la COI.