2010-02-15 11 views
3

Lorsque je tente et utiliser le code qui utilise la bibliothèque Caching Enterprise Bloc Je reçois l'erreur suivante:Pourquoi le fichier de configuration Application Block Mise en cache EntLib en utilisant le mauvais

La section « cachingConfiguration » n'est pas disponible dans le source de configuration fournie.

La section est cependant dans mon fichier app.config pour cet assembly particulier. Si je copie le fichier dans l'ensemble de test unitaire qui utilise le code mentionné ci-dessus tout fonctionne. Est-il possible que je puisse le forcer à utiliser la configuration de l'application qui existe dans la bibliothèque référencée afin que je n'ai pas besoin de le dupliquer dans chaque assembly qui l'utilise?

Répondre

2

Oui.

Sélectionnez un fichier app.config comme fichier de configuration maître (un bon choix serait celui du projet de l'exécutable principal de l'application).

Allez maintenant à votre autre projet (par exemple le projet de test unitaire). Cliquez avec le bouton droit et sélectionnez Ajouter un élément existant. Pointez sur le fichier app.config maître et ajouter en utilisant le « lien Comme » l'option: Maintenant, il vous suffit

Add as link http://blog.codevelop.dk/pics/AddAsLink.png

pour gérer un fichier app.config, et les autres projets « référence » cette fichier.

Option 2: Si vous wan't pour contrôler ce fichier config l'Enterprise Library utilise pour la configuration de la mise en cache, utilisez:

var fileSource = new FileConfigurationSource(configFilePath); 
var factory = new CacheManagerFactory(fileSource); 
ICacheManager manager = factory.CreateDefault(); 
+0

Merci, j'ai fini par utiliser la deuxième option et lire dans le chemin du fichier comme Properties.Settings.Default.SomePath. De cette façon, l'assemblage fonctionne hors de la boîte mais les fichiers de configuration plus haut peuvent remplacer l'emplacement de configuration du cache vers un autre emplacement. – LaserJesus

1

Le fichier de configuration dll que vous voyez dans l'EDI (si vous utilisez le concepteur pour ajouter des paramètres, etc.) est largement utile. L'exécution ne le recherchera pas; il veut le fichier de yourexename.config. Certains composants fournissent la possibilité de spécifier un chemin de fichier de configuration séparé - je ne sais pas si c'est le cas pour entlib.

Vous pouvez également spécifier le chemin du fichier de configuration si vous créez votre propre AppDomain s. Et enfin certaines sections de configuration peuvent être référencées à partir d'autres fichiers plutôt que d'utiliser le fichier complètement (voir configSourcehere) - mais en général (et surtout pour les tests) il est plus facile de simplement copier la section de configuration dans l'application de plus haut niveau fichier de configuration (ou le fichier de configuration du test unitaire dans ce cas).

+0

J'espérais qu'il y aurait quelque chose de semblable à Properties.Settings.Default.xxxx où la valeur semble être «cuite» dans l'assemblage, à moins que vous ne l'indiquiez plus haut dans la hiérarchie de configuration. Il semble que ce n'est pas le cas pour les sections de configuration? – LaserJesus