Может ли моя DLL проверить условия в вызывающем приложении во время компиляции? - PullRequest
2 голосов
/ 07 января 2012

Краткая версия: я делаю DLL, которую намереваюсь передать в отдел, и она требует определенных значений, присутствующих в web.config приложения, которое ссылается на нее.Можно ли как-нибудь проверить мою библиотеку DLL на наличие этих значений перед выполнением?

Длинная версия с фоновой информацией: мы используем файлы web.config уровня веб-сайта для настройки информации среды для нескольких веб-сайтов / служб WCFна том же сервере.При разработке этих приложений у меня есть отладочные версии web.config, вставляющие тестовые значения, и все хорошо.Тем не менее, я бы хотел максимально сократить скрытые требования для будущих пользователей [меня, через год, когда я все это забуду], и сделать недостающие настройки конфигурации как можно более очевидными.Если ссылка или решение во время сборки невозможно или неосуществимо, какова самая ранняя возможность во время выполнения, которую моя DLL может подключить для проверки своей конфигурации?

Кроме того, мы используем встроенные классы конфигурации приложения для расшифровкинастройки автоматически во время выполнения, а также использование преимуществ иерархии конфигурации, поэтому мы ограничены использованием файлов app / web.config.Если кто-нибудь знает более надежный способ проектирования системы в отношении сборок, на которые ссылаются, требующих записей конфигурации, я был бы признателен за предложения.

1 Ответ

0 голосов
/ 07 января 2012

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

К сожалению, в зависимости от содержимого вашей DLL это может занять довольно много времени. Лучший способ начать - рассмотреть все типы public и статические методы. Это ваши самые очевидные точки входа в базу кода.

Это также подходящее время для проверки ваших точек входа и ограничения их до уровня, который можно контролировать :)

...