2010-11-10 3 views
0

У меня есть библиотека классов, для которой требуется некоторая конфигурация. В эту библиотеку классов ссылаются несколько приложений (несколько веб-сайтов ASP.Net и приложения Windows Forms). Конфигурация библиотеки общедоступных классов.

Насколько я понимаю, можно сохранить конфигурацию в файле app.config => myDll.dll.config библиотеки , См.: Putting configuration information in a DLL и C# Dll config file

Моя проблема заключается в том, что я не хочу вручную обрабатывать копирование файла конфигурации в папку bin каждой сборки узла. Есть ли механизм в .Net для обработки сопряжения dll с его конфигурационным файлом, чтобы сопроводительная конфигурация была скопирована вместе с dll, если она была распределена/привязана?

ответ

1

Если конфигурация одинакова для всех экземпляров вашей DLL, я бы добавил ее в качестве встроенного ресурса, поэтому она является частью вашей DLL, а не отдельным файлом.

Чтобы сделать это, добавьте его в качестве файлового ресурса в файл Resource.resx или просто добавьте файл непосредственно в свой проект, а затем установите его тип компиляции (в окне свойств) в Embedded Resource.

Затем вы можете использовать Assembly.GetExecutingAssembly.GetManifestResourceNames(), чтобы указать имена ресурсов в вашей DLL и Assembly.GetExecutingAssembly.GetManifestResourceStream(), чтобы получить поток для чтения данных файла. Я бы, вероятно, использовал простой XML-формат homebrew для своих данных, а затем XmlTextReader/XmlDocument, чтобы прочитать его очень легко.

+0

Спасибо, это сработает; Однако если для конфигурации потребуется изменение, необходимо будет скомпилировать и распределить новую dll. – Null

+0

@Null: опция: вместо того, чтобы просто читать с ресурса, сначала проверьте, есть ли файл конфигурации в Application.StartupPath - откройте это как ваш входной поток, а не тот, который встроен в ваши ресурсы. Если файл отсутствует, откройте ресурс. Таким образом, по умолчанию чисты встроены в DLL, но пользователь может добавить файл позже, чтобы переопределить параметры, если это необходимо. –

+0

Посмотрите на эту библиотеку, которая упрощает безумие конфигурации https://github.com/aloneguid/config –

0

Вы должны развернуть эту .dll в GAC и поместить туда конфигурационный файл, все приложения сначала будут искать GAC при размещении ссылки. Here - это способ развертывания dll + config.

Смежные вопросы