2010-05-30 4 views
1

С 2005 года, когда я искал googled, проблема в том, кто должен прочитать конфигурацию сборки из своего конфигурационного файла «* .dll.config», и Microsoft ничего не делала.Старая проблема с dll.config!

История. Если вы попытаетесь прочитать параметр из библиотеки классов (плагина), вы терпите неудачу. Вместо этого основной файл приложения (EXE, который использует подключаемый модуль) читается, и, поскольку, вероятно, нет такой конфигурации, ваш плагин будет использовать настройку по умолчанию, которая жестко закодирована при создании ее настроек в первый раз. Любое изменение на .dll.config не будет видно вашим плагином, и вам интересно, почему он там! Если вы хотите его заменить и начать поиск, вы можете найти что-то вроде этого: C# DLL config file Но только некоторые идеи и один код строки. Хорошая замена встроенной конфигурации не должна считываться из файловой системы каждый раз, когда нам нужно значение конфигурации, поэтому мы можем хранить их в памяти; Тогда что, если пользователь изменяет файл конфигурации? нам нужен FileSystemWatcher, и нам нужен какой-то дизайн, как singleton ... и, наконец, мы в той же точке конфигурации .NET, за исключением нашей работы. Кажется, MS сделала все, но забыла, почему они построили « .dll.config». Поскольку никакая DLL не будет выполняться сама по себе, они ссылаются на другие приложения (даже если они используются в Интернете), и почему существует такой файл «* .dll.config»? Я не собираюсь утверждать, хорошо ли иметь несколько файлов конфигурации или нет. Это мой дизайн (подключаемые компоненты).

И наконец, { После этих лет существует ли какая-либо хорошая практика, например, пользовательский класс настроек, который нужно добавить в каждую сборку и прочитать из собственного файла конфигурации? }

+0

Ehm, каков был ваш вопрос? –

+0

finally statement – Xaqron

+0

Ваша проблема о dll, которую вы писали? – rkellerm

ответ

0

У меня была аналогичная проблема, и я в конечном итоге удаление файла конфигурации из DLL в целом и поместить его с приложением, так что при инициализации класса, содержащийся в DLL я прохожу все необходимые параметры , Немного полицейский, но теперь он отлично работает.