2010-11-10 3 views
0

J'ai une bibliothèque de classes qui a besoin d'une configuration pour fonctionner. Cette bibliothèque de classes est référencée par plusieurs applications (plusieurs sites Web ASP.Net et applications Windows Forms)Configuration de la bibliothèque de classes partagées .Net

Je comprends qu'il est possible de stocker la configuration dans le fichier app.config => myDll.dll.config de la bibliothèque . Voir: Putting configuration information in a DLL, et C# Dll config file

Mon problème est que je ne veux pas gérer manuellement la copie du fichier de configuration dans le dossier bin de chaque assembly hôte. Existe-t-il un mécanisme dans .Net pour gérer l'appariement de la DLL à son fichier de configuration afin que la configuration d'accompagnement soit copilée avec la DLL où qu'elle soit distribuée/référencée?

Répondre

1

Si la configuration est la même pour toutes les instances de votre DLL, alors je l'ajouterais comme une ressource incorporée, donc cela fait partie de votre DLL et pas du tout un fichier séparé. Pour cela, ajoutez-le en tant que ressource de fichier dans votre fichier Resources.resx ou ajoutez le fichier directement à votre projet, puis définissez son type de compilation (dans la fenêtre Propriétés) sur Embedded Resource.

Vous pouvez ensuite utiliser Assembly.GetExecutingAssembly.GetManifestResourceNames() pour répertorier les noms des ressources de votre DLL et Assembly.GetExecutingAssembly.GetManifestResourceStream() pour obtenir un flux dans lequel lire les données du fichier. J'utiliserais probablement un format XML homebrew simple pour mes données et ensuite un XmlTextReader/XmlDocument pour le lire très facilement.

+0

Merci, cela fonctionnerait; Cependant, si une modification est nécessaire pour la configuration, une nouvelle DLL devrait être compilée et distribuée. – Null

+0

@Null: Une option: au lieu de simplement lire à partir de la ressource, vérifiez d'abord s'il existe un fichier de configuration dans Application.StartupPath - ouvrez-le comme votre flux d'entrée de préférence à celui intégré dans vos ressources. Si le fichier est manquant, repli sur la ressource. De cette façon, les valeurs par défaut sont correctement intégrées dans la DLL, mais l'utilisateur peut ajouter un fichier plus tard pour remplacer les paramètres si nécessaire. –

+0

Jetez un oeil à cette bibliothèque qui simplifie la folie de configuration https://github.com/aloneguid/config –

0

Vous devrez déployer ce fichier .dll dans GAC et y placer le fichier de configuration, tout Les applications rechercheront d'abord le GAC lors du transfert d'une référence. Here est comment vous pouvez déployer la config dll +.

Questions connexes