【问题标题】:Correctly locate DLL's App.config section handler assemblies正确定位 DLL 的 App.config 节处理程序程序集
【发布时间】:2011-05-16 03:51:22
【问题描述】:

我正在编写一个由第三方应用程序加载的 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 特定解决方案都适合我。

非常感谢您的任何帮助!

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

    • 谢谢!我接受这个答案,因为它似乎可以解决问题。但是,我们遇到了其他类似的问题,所以,唉,我们不得不采用更丑陋的解决方案,我将添加它作为第二个答案。还是非常感谢!
    • kbalertz 链接已失效,有人找到有效的吗?我遇到了同样的问题,无法加载与 .config 位于同一位置的 DLL。
    【解决方案2】:

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

    这不是很好,但它有效。

    【讨论】:

    • 您还在使用同样的方法还是在此期间发现了更好的方法?
    猜你喜欢
    • 2014-09-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多