.NET - хранение App.config с библиотекой классов - PullRequest
3 голосов
/ 23 июня 2010

В интернете об этом часто спрашивают, но до сих пор мое исследование не дало решения. (И, по крайней мере, на данный момент, я не принял решение «это невозможно сделать»).

В самом простом описании я пытаюсь создать файл конфигурации в проекте библиотеки классов .NET, который доступен этой библиотеке классов в любом приложении, которое на него ссылается. Моя настройка может быть упрощена до 3 служб WCF, совместно использующих некоторую доменную логику. Одна из вещей, которыми они делятся, - это введенная зависимость от логгера. В этом случае у меня есть отдельная библиотека, которая реализует регистратор (эта библиотека - то, что вводится), используя log4net.

В этой настройке каждая из 3 служб имеет свой собственный файл конфигурации, и каждый из этих файлов конфигурации должен настраивать log4net. Я пытаюсь полностью абстрагировать log4net в отдельную библиотеку, чтобы эти 3 службы (и будущие службы / приложения, которых будет много) не должны были переносить эту конфигурацию. Все они будут настроены одинаково, поэтому я бы предпочел, чтобы это было в одном месте.

До сих пор мне удалось найти некоторый код, который позволит локализовать библиотеку конфигурационного файла appsetttings (пары ключ / значение), и я могу получить к нему доступ. Но я ищу более полный подход к файлу конфигурации. Log4net имеет пользовательский раздел конфигурации, который больше, чем пары ключ / значение. (Другие разделы конфигурации также будут использоваться в нескольких приложениях, таких как раздел system.serviceModel в общей библиотеке, используемой клиентскими приложениями для подключения к службам WCF).

Имеет ли это смысл? Кто-нибудь раньше придумывал решение для такого рода вещей?

1 Ответ

2 голосов
/ 23 июня 2010

Вы действительно не можете иметь файлы .config с библиотекой классов так же, как для исполняемых файлов! Тем не менее, библиотека классов может, конечно, читать и записывать XML-файлы, так что вы можете подделать ее в определенной степени. Эта статья проекта кода описывает один из способов сделать это, я не удивлюсь, если есть другие подобные решения, так как, как вы говорите, это общий вопрос.

...