Сохраните настройки конфигурации для .NET DLL (не EXE или Web) - PullRequest
4 голосов
/ 19 января 2011

У меня есть проект библиотеки классов .NET 4, который используется несколькими веб-проектами.В этой библиотеке классов мне нужно получить строку подключения к БД, и она должна быть одинаковой для всех веб-проектов.В настоящее время у меня есть это как настройка в каждом файле web.config , но это не идеально.Можно ли как-нибудь сохранить эту конфигурацию в DLL, но все же разрешить ее изменение во время выполнения (т. Е. Жесткое кодирование строки подключения отсутствует)?

Кажется, что App.config обычно игнорируется дляDLL, хотя она переименовывается в assemblyname .dll.config и копируется в каталог bin для Интернета.Я попытался сделать его «настройкой приложения» (т. Е. Использовать автоматически сгенерированный класс, полученный из System.Configuration.ApplicationSettingsBase), и этот оказался для работы, но изменение значения в файле DLL .config во время выполненияэффект, так что я подозреваю, что на самом деле просто используется жестко закодированное значение по умолчанию настройки.

Ответы [ 3 ]

2 голосов
/ 19 января 2011

Вы можете сохранить параметр в базе данных реестра, если он должен быть одинаковым для всех программ на компьютере, использующем вашу библиотеку.

2 голосов
/ 19 января 2011

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

DLL как таковая пассивна (или должна быть) и действует только при явных вызовахот его пользователей, и, следовательно, не должны нуждаться в какой-либо конфигурации для своих собственных целей (за исключением, может быть, «глобальной» диагностики, но даже тогда ...), поскольку вызывающая сторона может предоставить ее при использовании соответствующих функций.

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

Чтобы сделать вещи более управляемыми, вы можете рассмотреть вопрос о перемещении этой проблемы в сборку или развертываниепроцесс вместоВ файлах конфигурации вашего приложения (в данном случае файлах web.config) поместите заполнитель для строки подключения.Затем во время сборки или развертывания (в зависимости от ваших потребностей) замените этот заполнитель истинной строкой соединения, которую вы можете сохранить в одном файле.

0 голосов
/ 19 января 2011

Нет способа изменить это. Это просто, как работает .NET. Необходимо скопировать настройки из DLL app.config в файл web.config или имя_программы .exe.config.

...