160 votes

équivalent de app.config pour la bibliothèque (dll)

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.

175voto

Shadow Wizard Points 38568

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.

30voto

PawanS Points 2076

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

10voto

madd0 Points 4836

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.

4voto

Joe Points 60749

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.

2voto

Allan Elder Points 2043

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X