Utiliser app.config avec une bibliothèque de classes

Souvent, je dois créer une bibliothèque de classes .Net nécessitant un app.config pour des éléments tels que des chaînes de connexion à une firebase database. Cependant, ces parameters doivent figurer dans le fichier app.config ou web.config de l’application appelante. Si je souhaite dissortingbuer la DLL sur plusieurs applications, cela devient difficile car je dois copier ces parameters dans chaque application.config de l’application.

J’ai envisagé de lire manuellement les parameters de configuration via du code à partir de la bibliothèque de classes, mais cela pose également un problème majeur. Quelqu’un at-il des suggestions pour le meilleur moyen de charger les parameters app.config dans une bibliothèque de classes?

Une chose que vous pouvez faire est d’avoir un fichier de parameters séparé pour votre bibliothèque, il vous suffit alors d’avoir une référence à ce fichier dans votre fichier de configuration des applications de saisie.

Voir la réponse acceptée dans cette question pour plus d’informations à ce sujet.

Je sais que ce n’est pas ce que vous voulez entendre, mais le fichier de configuration du point d’entrée est l’endroit logique pour placer ces parameters. Si chaque bibliothèque nécessitait son propre fichier de configuration, il serait fastidieux de devoir éditer chaque fichier au lieu d’un seul.

J’aurais un fichier texte avec les parameters par défaut inclus dans votre bibliothèque (et dans le cadre du projet) qui peut être dissortingbué avec la bibliothèque pour la configuration des parameters par défaut (il peut être copié et collé dans le fichier de configuration).

Demandez à chaque bibliothèque de classe de définir les parameters de configuration dans une ConfigurationSection personnalisée.

Ensuite, ajoutez des gestionnaires de section personnalisés à votre fichier process.exe.config.

Cet article MSDN est très complet dans ses explications, avec des exemples à la fois en VB et en C #.

Cela implique d’écrire un code assez répétitif – Dmitryr a créé cet outil pour générer les sections de configuration à partir d’un fragment d’une configuration XML, ce qui pourrait aider.

Voici une alternative.

Au lieu d’essayer de trouver des moyens de “fusionner” votre app.configs, ou même de placer des éléments de configuration dans votre DLL (et d’essayer de contourner ce qui est “à la conception”), essayez ceci:

Créez votre DLL, mais lorsque vous avez besoin d’un élément de configuration, créez une propriété publique. Lorsque vous instanciez la classe dans la DLL, vous remplissez ces propriétés avec des éléments de configuration de l’application propriétaire.

Maintenant, la configuration est gérée au niveau du propriétaire et la DLL est portable, car vous devez lui transmettre ce dont vous avez besoin au moment de l’exécution.

Pas plus de DLL.config!

Accédez aux propriétés de l’application -> onglet Paramètres; ajoutez vos parameters ici.

Utilisez Properties.Settings.Default. pour accéder au paramètre. C’est tout!

Utiliser son propre fichier de configuration pour chaque bibliothèque de classes n’est pas un gros problème. Si vous utilisez vb.net, vous pouvez append des valeurs via le panneau “mon projet” sur la page “Paramètres”.

La seule chose à faire est d’appeler “My.Settings.Save” sur les parameters de votre bibliothèque de classes (et pas seulement sur le fichier de parameters de votre application principale).

Cela fonctionne aussi avec c # (mais nécessite probablement plus de travail manuel).

Si vous utilisez NUnit , nommez votre fichier app.config sous le même nom que votre nom de fichier de projet * .nunit. Par exemple, si vous avez appelé votre projet “ClassLibraryA.nunit”, nommez ensuite votre fichier de configuration de bibliothèque de classes “ClassLibraryA.config”. Ils doivent également résider dans le même dossier / répertoire. NUnit l’utilise en fait comme fichier de configuration principal.

Si vous avez du code personnalisé , vous devez vous assurer que votre app.config (ou web.config) fait référence au fichier app.config de la bibliothèque de classes. L’application ne s’intéresse qu’à la racine app.config ou web.config. Vous devez donc append une section de configuration personnalisée qui pointe vers la bibliothèque de classes app.config.

Vous pouvez créer votre propre fichier XML (appelez-le appConfig.xml ou quelque chose si vous le souhaitez), utilisez System.Xml au lieu de System.Configuration pour le lire et incluez-le avec votre DLL.

Créez votre bibliothèque de classes dans une solution différente. Si vous les conservez dans la même solution, le fichier app.config de la plus haute hiérarchie sera lu à la place.