C# 如何:使用ConfigurationSection而不通过GetSection调用加载它

C# 如何:使用ConfigurationSection而不通过GetSection调用加载它,c#,configurationsection,C#,Configurationsection,我想加载特定的ConfigurationSection,但CLR加载程序集的方式给我带来了一些麻烦: 我的CustomConfigurationSection定义在一个特定的程序集上,这个程序集在整个程序集加载过程中找不到,因为我使用的是一个外部工具,它基本上加载我的程序集,通过反射发现有关它的一些信息,然后尝试“安装”它。与尝试安装windows服务时的installutil非常相似 我快发疯了,因为ConfigurationManager试图在原始流程的位置下找到我的Configuratio

我想加载特定的ConfigurationSection,但CLR加载程序集的方式给我带来了一些麻烦:

我的CustomConfigurationSection定义在一个特定的程序集上,这个程序集在整个程序集加载过程中找不到,因为我使用的是一个外部工具,它基本上加载我的程序集,通过反射发现有关它的一些信息,然后尝试“安装”它。与尝试安装windows服务时的installutil非常相似

我快发疯了,因为ConfigurationManager试图在原始流程的位置下找到我的ConfigurationSection所需的程序集。我在使用SysInternals进程监视器时肯定知道这一点。有人能提供一些解决方法或指导吗


谢谢

如果需要程序集反序列化自定义配置节,但CLR找不到该程序集,那么我认为您运气不好(或者我误解了这个问题?)


有没有办法让CLR找到你的程序集(可能提供一个提示路径)?如果没有,也许您最好使用一个单独的XML文件来处理这些数据,而不是使用app.config/web.config。

如果需要程序集来反序列化自定义配置节,但CLR找不到程序集,那么我认为您运气不好(或者我误解了这个问题?)


有没有办法让CLR找到你的程序集(可能提供一个提示路径)?如果没有,您最好使用一个单独的XML文件来处理这些数据,而不是使用app.config/web.config。

如果您知道程序集的路径,那么您应该尝试ConfigurationManager.OpenExeConfiguration(exePath)。

如果您知道程序集的路径,那么您应该尝试ConfigurationManager.OpenExeConfiguration(exePath).

为什么在加载程序集(定义配置节)之前要尝试访问配置节?您是否使用配置部分来定义程序集的位置?如果是这样的话,那么你就是在玩弄循环引用


定义自定义配置节的代码可以是非常独立的。它可以是自己的组件。我建议将此代码分离到自己的程序集中,并将其安装在GAC或运行时路径中。我不知道为什么需要外部工具来“加载”读取自定义配置节所需的代码。

为什么在加载程序集(定义配置节)之前尝试访问配置节?您是否使用配置部分来定义程序集的位置?如果是这样的话,那么你就是在玩弄循环引用


定义自定义配置节的代码可以是非常独立的。它可以是自己的组件。我建议将此代码分离到自己的程序集中,并将其安装在GAC或运行时路径中。我不知道为什么您需要一个外部工具来“加载”读取自定义配置节所需的代码。

我面临类似的问题。几个DLL动态加载到主应用程序中。其中一些dll需要一个配置文件,我正在使用默认的ConfigurationManager来处理这个问题。我可以成功地检索正确的文件(基于用“.config”后缀的dll名称),并使用AppSettings和ConnectionString中的设置

现在我尝试加载一个自定义配置部分。运行库抱怨在dll中找不到节类型。我已经在配置文件(在configSections条目中)中指定了正确的dll,并且我知道该dll已加载,因为该dll实际上就是插件本身。但是仍然;运行时似乎只使用GAC/bin目录中的类型来查找配置部分


简单地说:我尝试加载一个自定义配置节,该节与试图加载它的代码在同一个dll中指定,但它不起作用。

我面临一个类似的问题。几个DLL动态加载到主应用程序中。其中一些dll需要一个配置文件,我正在使用默认的ConfigurationManager来处理这个问题。我可以成功地检索正确的文件(基于用“.config”后缀的dll名称),并使用AppSettings和ConnectionString中的设置

现在我尝试加载一个自定义配置部分。运行库抱怨在dll中找不到节类型。我已经在配置文件(在configSections条目中)中指定了正确的dll,并且我知道该dll已加载,因为该dll实际上就是插件本身。但是仍然;运行时似乎只使用GAC/bin目录中的类型来查找配置部分


简单地说:我尝试加载一个自定义配置节,该节与试图加载它的代码在同一个dll中指定,但它不起作用。

我同意。这正是我的问题。也许我会自己解析它,我只是想保持一致性,并以“网络化”的方式进行:(我同意。这正是我的问题。也许我会自己解析它,我只是想保持一致性,并以“网络化”的方式进行:(