正确定位DLL的App.config节处理程序集

时间:2010-11-26 11:45:21

标签: c# .net dll app-config fitnesse

我正在编写一个由第三方应用程序加载的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'   抛出一个例外。 ---&GT;   System.Configuration.ConfigurationErrorsException:   创建时发生错误   配置节处理程序   myGroup / MySection:无法加载文件   或汇编'MyNamespace.MyHandler'或   其中一个依赖项。系统   找不到指定的文件

我可以看到系统在加载我的DLL的可执行文件所在的同一文件夹中查找此文件。但是,我不想将我的文件复制到第三方目录中,反之亦然。

有没有办法指定系统在哪里寻找DLL来解释App.config文件?一般解决方案或FitNesse特定解决方案都适用于我。

非常感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这是我们发现自己的另一种解决方案。虽然Gregor S.提出的解决方案确实使我们能够阅读App.config,但我们稍后会遇到有关工作目录的其他问题。所以我们现在正在做的是将FitNesse Runner应用程序添加为我们项目的链接,以便从它的原始位置拾取它并在执行之前复制到我们的测试应用程序的文件夹中。

这不好,但它有效。