Правильно найдите сборки обработчика раздела App.config DLL - PullRequest
2 голосов
/ 26 ноября 2010

Я пишу DLL, которая загружается сторонним приложением (тестовый прогон фреймворка FitNesse , DLL является тестовым приспособлением).

У DLL есть собственный файл App.config (скажем, MyDll.dll.config), и я могу сказать FitNesse загрузить этот файл App.config.

Но вот проблема: файл App.config содержит пользовательский обработчик раздела конфигурации, например:

<configuration>

  <configSections>
    <sectionGroup name="myGroup">
        <section name="MySection" type="MyNamespace.MyHandler.MySection, MyNamespace.MyHandler"/>
        ...
    </sectionGroup>
  </configSections>
  ...
</configuration>

Всякий раз, когда файл App.config читается, я получаю исключение, в котором говорится, что сборка MyNamespace.MyHandler не может быть найдена, хотя она находится в той же папке, что и файл MyDll.dll.config для чтения:

System.TypeInitializationException: Инициализатор типа для 'MyNamespace.MyHandler.MySection' бросил исключение. ---> System.Configuration.ConfigurationErrorsException: Произошла ошибка при создании обработчик раздела конфигурации для myGroup / MySection: не удалось загрузить файл или сборка "MyNamespace.MyHandler" или одна из его зависимостей. Система не могу найти указанный файл

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

Есть ли способ указать, где система должна искать библиотеки DLL для интерпретации файла App.config? Общее решение или решение, подходящее для FitNesse, подойдет мне.

Заранее большое спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Вы можете попробовать использовать раздел времени выполнения, как описано здесь:

http://kbalertz.com/897297/consume-assemblies-located-folder-different-application-folder-Visual-Basic.aspx

0 голосов
/ 29 ноября 2010

Вот еще одно решение, которое мы нашли сами. Хотя решение, представленное Грегором С., действительно, похоже, позволяет нам читать App.config, позже мы столкнемся с другими проблемами, касающимися рабочего каталога. Итак, то, что мы делаем сейчас, - это добавление приложения FitNesse Runner в качестве ссылки на наш проект, чтобы оно было взято из исходного местоположения и скопировано в папку нашего тестового приложения до его выполнения.

Это не приятно, но работает.

...