C# 正确定位DLL';s App.config节处理程序程序集
我正在编写一个由第三方应用程序加载的DLL(FitNesse框架的测试运行程序,DLL是一个测试夹具) DLL有自己的App.config文件(比如MyDll.DLL.config),我可以告诉FitNesse加载该App.config文件 但问题是:App.config文件包含自定义配置节处理程序,如下所示:C# 正确定位DLL';s App.config节处理程序程序集,c#,.net,dll,app-config,fitnesse,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">
<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特定解决方案都适合我
提前非常感谢您的帮助 您可以尝试使用运行时部分,如下所述:
这是我们自己找到的另一个解决方案。虽然Gregor S.提出的解决方案似乎确实使我们能够读取App.config,但稍后我们会遇到关于工作目录的其他问题。因此,我们现在正在做的是,添加FitNesse Runner应用程序作为项目的链接,以便在执行之前将其从原始位置拾取并复制到测试应用程序的文件夹中
这不好,但很管用。谢谢!我接受这个答案,因为它似乎解决了问题。然而,我们遇到了其他类似的问题,所以,唉,我们不得不采用一个更丑陋的解决方案,我将补充这一点作为第二个答案。无论如何,非常感谢!kbalertz链接失效,有人找到有效的吗?我遇到了同样的问题,无法加载与.config位于同一位置的DLL。您是否仍在使用相同的方法,或者同时发现了更好的方法?