.net 是否可以在不同的目录中创建一个自定义配置节,其中包含程序集?

.net 是否可以在不同的目录中创建一个自定义配置节,其中包含程序集?,.net,configuration,.net,Configuration,我有一个为自定义配置节提供类结构的程序集。是否有方法将config节连接起来,指向不同目录中的程序集,或者程序集必须与消费应用程序或GAC位于同一目录中?如果它可以位于不同的目录中,我将如何/在何处指定该目录 例如: MyConsole.exe - lib folder - - The custom config assembly. MyConsole.exe -库文件夹 --自定义配置程序集。 编辑: 这是我的App.config: <configSections>

我有一个为自定义配置节提供类结构的程序集。是否有方法将config节连接起来,指向不同目录中的程序集,或者程序集必须与消费应用程序或GAC位于同一目录中?如果它可以位于不同的目录中,我将如何/在何处指定该目录

例如:

MyConsole.exe - lib folder - - The custom config assembly. MyConsole.exe -库文件夹 --自定义配置程序集。 编辑:

这是我的App.config:

<configSections>
        <section name="TestCustomSection" type="TestCustomConfigSections.TestCustomSection, TestCustomConfigSections" />
</configSections>
<TestCustomSection message="Test is a subdirectory test." />

当TestCustomConfigSections.dll与我的控制台应用程序位于同一目录中时,它可以正常工作。当我将其移动到/lib时,当我的代码调用
GetSection(“TestCustomSection”)
时,它会抛出一个异常,因为它找不到文件或程序集


谢谢。

当.NET fusion绑定您的引用时,它会在探测请求的DLL时遍历许多目录。它们都应该是ApplicationBase的子目录。您可以通过检查fuslogvw实用程序生成的fusion日志来查看它们。要启动该实用程序,可以从Visual Studio工具菜单打开命令提示符。如果此探测进程找不到dll,将引发异常

除非在探测发生时您已订阅AppDomain.AssemblyResolve事件。在这种情况下,您将有机会使用assembly.load或assembly.LoadFrom自行加载程序集

编辑

只有在AppDomainSetup PrivateBinPath属性中列出了其他目录时,它才会查看这些目录。如果以编程方式创建域,您可以自己设置属性,对于主appdomain,您可以在appconfig文件中设置它:

<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="bin;bin\subdir;anotherbin"/> </assemblyBinding> </runtime> </configuration>
我试图使额外目录必须位于appbase下,否则它们将被忽略

我尝试使用fuslogvw,当程序集与exe位于同一目录中时,它会显示我的程序集,但当我将其移动到子目录时,它会丢失它。根据您所说的,它应该查看ApplicationBase的子目录,但情况似乎并非如此。将assemblyBinding项添加到我的配置文件后,效果非常好。谢谢