AppSettings / ConnectionStrings всегда будет считываться из текущего запущенного пула приложений.
Под этим я подразумеваю:
Если у меня есть A.exe
, у которого есть класс DAL.cs
. DAL.cs читает строку подключения из конфигурации и возвращает "abc"
, как и ожидалось.
Затем я перемещаю DAL.cs в его собственный проект и, следовательно, в его собственную сборку. Я могу по-прежнему вызывать строку подключения из app.config, однако Мне нужно будет "разместить" сборку в работающем приложении и добавить строку подключения в конфигурацию приложения этого приложения . Итак, я создаю новый app.config и указываю в нем строку подключения "xyz"
, когда он работает, он работает как положено.
Теперь, если я изменю ссылку в проекте A.exe
на новую DAL.dll
, как вы думаете, какая строка подключения будет иметься? "xyz"
? Нету! Он будет использовать "abc"
, как и раньше, потому что он все еще настроен в файле конфигурации приложения для A.exe
.
Я знаю, что это работает, потому что я использовал общий код DAL во многих веб-приложениях Windows и .
Если что-то из этого неясно или не помогает вашей проблеме, пожалуйста, дайте мне знать, комментируя этот ответ.
Обновить следующий комментарий от OP
Под «хостом» я подразумеваю приложение, которое вызывает общий код. Это может быть Windows или веб-приложение, в основном это контекст приложения.
Вам потребуется создать записи в файлах конфигурации для каждого приложения, которое использует общий код. Если я неправильно понял ваш исходный вопрос (вполне возможно, это был долгий день!), И вы также хотите централизовать настройку, вам потребуется:
- Создать некую форму централизованного хранилища (будь то XML, БД и т. Д.).
- У вашего общего кода должны быть значения по умолчанию, чтобы он мог подключаться к централизованному хранилищу.
- Оттуда код может сам настраиваться на основе информации в хранилище конфигурации.
Надеюсь, это поможет:)