Почему блок кэширования приложений EntLib использует неправильный файл конфигурации - PullRequest
3 голосов
/ 15 февраля 2010

Когда я пытаюсь использовать код, который использует блок кэширования Enterprise Library, я получаю следующую ошибку:

Раздел «cachingConfiguration» недоступен в предоставленном источнике конфигурации.

Этот раздел находится в моем файле app.config для этой конкретной сборки. Если я копирую файл в сборку модульного теста, которая использует вышеупомянутый код, все работает. Есть ли способ заставить его использовать конфигурацию приложения, которая существует в указанной библиотеке, поэтому мне не нужно дублировать ее в каждой сборке, которая ее использует?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010

Да.

Выберите файл app.config в качестве основного конфигурационного файла (хорошим вариантом будет файл в проекте исполняемого файла основного приложения).

Теперь перейдите к вашему другому проекту (например, проект модульного тестирования). Щелкните правой кнопкой мыши и выберите «Добавить существующий элемент». Укажите основной файл app.config и добавьте , используя параметр «Как ссылка» :

Добавить по ссылке http://blog.codevelop.dk/pics/AddAsLink.png

Теперь вам нужно управлять только одним файлом app.config, а другие проекты будут ссылаться на этот файл.

Вариант 2. Если вы не хотите контролировать, какой файл конфигурации Enterprise Library использует для конфигурации кэширования, используйте:

var fileSource = new FileConfigurationSource(configFilePath);
var factory = new CacheManagerFactory(fileSource);
ICacheManager manager = factory.CreateDefault();
1 голос
/ 15 февраля 2010

Файл конфигурации dll, который вы видите в IDE (если вы используете дизайнер для добавления настроек и т. Д.), В основном для удобства. Среда выполнения не будет искать его; он хочет файл из yourexename.config. Некоторые компоненты предоставляют возможность указать отдельный путь к файлу конфигурации - я не знаю, так ли это для entlib.

В качестве альтернативы, если вы создаете свои собственные AppDomain s, вы можете указать путь к файлу конфигурации. И, наконец, на некоторые разделы конфигурации можно ссылаться из других файлов, а не использовать файл полностью (см. configSource здесь ) - но в целом (и особенно для тестов) проще просто скопируйте раздел конфигурации в файл конфигурации приложения верхнего уровня (или в этом случае файл конфигурации модульного теста).

...