Как: использовать ConfigurationSection без загрузки его с помощью вызова GetSection - PullRequest
1 голос
/ 14 декабря 2008

Я хотел бы загрузить определенный ConfigurationSection, но способ, которым CLR загружает сборки, доставляет мне некоторые проблемы:

Мое определение CustomConfigurationSection относится к конкретной сборке, которая не может быть найдена общим процессом загрузки сборки, потому что я использую внешний инструмент, который в основном загружает мою сборку, обнаруживает некоторую информацию о ней посредством отражения и затем пытается "установить " Это. Очень похоже на installutil при попытке установить службу Windows.

Я схожу с ума, потому что ConfigurationManager пытается найти требуемую сборку для моего ConfigurationSection в месте расположения исходного процесса. Я знаю это точно, так как использую SysInternals Process Monitor. Может ли кто-нибудь предоставить обходной путь или направления?

Спасибо!

Ответы [ 4 ]

1 голос
/ 17 декабря 2008

Если вы знаете путь к вашей сборке, вам следует попробовать ConfigurationManager.OpenExeConfiguration (exePath).

0 голосов
/ 16 июля 2009

У меня похожая проблема. Несколько DLL загружаются в основное приложение dynamiccaly. Некоторые из этих DLL требуют файл конфигурации, и я использую ConfigurationManager по умолчанию для обработки этого. Я могу успешно получить правильный файл (на основе имени библиотеки, в котором стоит «.config») и использовать настройки из AppSettings и ConnectionStrings.

Теперь я пытаюсь загрузить пользовательский раздел конфигурации. Среда выполнения жалуется на то, что тип раздела не найден в DLL. Я указал правильную DLL в файле конфигурации (в записи configSections), и я знаю, что DLL загружена, потому что эта DLL на самом деле является плагином. Но до сих пор; похоже, что среда выполнения использует только типы из каталогов GAC / bin для поиска разделов конфигурации.

Итак, вкратце: я пытаюсь загрузить пользовательский раздел конфигурации, который указан в той же dll, что и код, который пытается загрузить его, но он не работает.

0 голосов
/ 01 января 2009

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

Код для определения пользовательского раздела конфигурации может быть очень автономным. Это может быть собственная сборка. Я бы предложил разделить этот код в его собственную сборку и установить его в GAC или в пути выполнения. Я не знаю, зачем вам нужен внешний инструмент для «загрузки» кода, необходимого для чтения пользовательского раздела конфигурации.

0 голосов
/ 14 декабря 2008

Если ваша сборка необходима для десериализации раздела пользовательской конфигурации, но CLR не может найти сборку, то я думаю, что вам не повезло (или я неправильно понимаю проблему?).

Есть ли какой-нибудь способ, которым вы можете заставить CLR найти вашу сборку (возможно, с указанием пути подсказки)? Если нет, возможно, вам лучше использовать для этих данных отдельный XML-файл, а не app.config / web.config.

...