% perl -w program.pl
Где моя пользовательская функция: use warnings;
Если Ваш пример кода для чтения AppSettings будет в Вашем DLL, то это попытается прочитать файл конфигурации для приложения а не файл конфигурации для DLL. Это вызвано тем, что Вы используете Отражение для выполнения кода.
Забавный, где я в, мы делаем что-то очень похожее, и файл конфигурации загружается очень хорошо. В нашем случае я думаю соответствия имени каждого нового файла конфигурации тот из, его связал блок. Таким образом, MyLibrary.dll имел бы файл по имени MyLibrary.dll.config с информацией для того блока файла. Кроме того, пример, который я имею удобный, использует VB.Net, а не C# (у нас есть часть каждого), и все настройки там - для VB-specific Мой. Пространство имен настроек, таким образом, мы не используем класс ConfigurationManager непосредственно для чтения их.
Сами настройки похожи на это:
<applicationSettings>
<MyLibrary.My.MySettings>
<setting name="SomeSetting" serializeAs="String">
<value>12345</value>
</setting>
</MyLibrary.My.MySettings>
</applicationSettings>
Я записал это для аналогичной системы. Мое воспоминание - то, что я использовал Assembly.GetExecutingAssembly
получить путь к файлу к DLL, добавленному .config
к тому имени, загруженному это как XmlDocument
, перемещенный к <appSettings>
узел и передал это a NameValueSectionHandler
Create
метод.
Если я вспомню правильно, то app.config будет загружен из Вашего каталога приложения, поэтому при загрузке dlls из некоторого другого каталога Вы захотите ключи, в которых они нуждаются в файле конфигурации Вашего приложения.
Я не полностью уверен, но я думаю, что класс только работает с путем метода ввода AppDomain (путь exe большую часть времени) по умолчанию. Необходимо звонить, OpenExeConfiguration (представьте exePath в виде строки) (Платформа 2.0 и позже) сначала для указания на другой файл конфигурации.