C# 是否可以定义<;配置部分>;在依赖dll中';s应用程序配置

C# 是否可以定义<;配置部分>;在依赖dll中';s应用程序配置,c#,configuration,configsection,C#,Configuration,Configsection,我有一个应用程序的自定义.NET加载项,我正在尝试为加载项的配置文件创建configSections。问题是,如果使用OpenMapperExeConfiguration/OpenExeConfiguration加载配置,我无法读取该部分 这是我的配置文件(MyTest.dll.config) 如图所示,appsettings值可以很好地读取。除了主应用程序的配置文件外,是否可以在任何其他配置中使用configSections?配置设置适用于应用程序(app.config位于应用程序的根目录下,

我有一个应用程序的自定义.NET加载项,我正在尝试为加载项的配置文件创建configSections。问题是,如果使用OpenMapperExeConfiguration/OpenExeConfiguration加载配置,我无法读取该部分

这是我的配置文件(MyTest.dll.config)


如图所示,appsettings值可以很好地读取。除了主应用程序的配置文件外,是否可以在任何其他配置中使用configSections?

配置设置适用于应用程序(app.config位于应用程序的根目录下,用于.EXE,Web根目录下,用于Web应用程序)和计算机(machine.config位于[System root]\Microsoft.NET\Framework[CLR Version]\config)级别

使用的唯一其他配置文件是策略配置文件,该文件用于创建程序集版本控制策略,并通过使用AL工具链接到程序集。这显然是你不想做的


尝试将外接程序的配置部分合并到当前应用程序的配置部分,以创建一个应用程序级别的配置文件,或将其放入machine.config文件。

配置设置适用于应用程序(app.config位于应用程序根目录中,用于.EXE,Web根目录下用于Web应用程序)和计算机(machine.config位于[系统根]\Microsoft.NET\Framework[CLR版本]\CONFIG)级别

唯一使用的另一个配置文件是策略配置文件,该文件用于创建程序集版本控制策略,并通过使用AL工具链接到程序集。这显然是您不想做的


尝试将外接程序的配置部分合并到当前应用程序的配置部分,以创建一个应用程序级别的配置文件,或者将它们放在machine.config文件中。

是否缺少“.”分隔符

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + "config"; 
添加“.”:

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 

是否缺少“.”分隔符

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + "config"; 
添加“.”:

fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; 

这并不像你在问题中提到的那样有效

您可能会觉得您可以加载DLL.Config文件,但应用程序没有加载它,但它可能会工作,因为您在applications app.Config中有相同的appsettings部分。默认情况下,每个appdomain都有一个配置文件,并且主要以exe命名(因此名称将为applicationname.exe.config

默认情况下,这是.net framework加载的用于读取配置的文件。 因此,我不建议维护.dll.config文件

现在,您有两种选择来实现您想要实现的目标:

选项1:您可以为每个配置部分维护单独的配置文件

从ConfigurationSection继承的每个类都有一个名为“configSource”的属性。在main application.exe.config中,您可以指定自定义节,如下所示:

<CustomSection configSource="{relative file name}" />
<appSettings file = "relative file name" />
通过这种方式,您可以将任何其他xml文件设置为程序的配置文件。
请注意,在首次调用配置类之前(即在系统读取配置文件之前),您必须调用此SetData方法。您可以将.dll.config设置为应用程序配置文件,并从中读取所有配置部分。有关选项2的更多详细信息,请参阅


希望这能提供足够的信息。

这并不像您在问题中提到的那样有效

您可能会觉得您可以加载DLL.Config文件,但应用程序没有加载它,但它可能会工作,因为您在applications app.Config中有相同的appsettings部分。默认情况下,每个appdomain都有一个配置文件,并且主要以exe命名(因此名称将为applicationname.exe.config

默认情况下,这是.net framework加载的用于读取配置的文件。 因此,我不建议维护.dll.config文件

现在,您有两种选择来实现您想要实现的目标:

选项1:您可以为每个配置部分维护单独的配置文件

从ConfigurationSection继承的每个类都有一个名为“configSource”的属性。在main application.exe.config中,您可以指定自定义节,如下所示:

<CustomSection configSource="{relative file name}" />
<appSettings file = "relative file name" />
通过这种方式,您可以将任何其他xml文件设置为程序的配置文件。
请注意,在首次调用配置类之前(即在系统读取配置文件之前),您必须调用此SetData方法。您可以将.dll.config设置为应用程序配置文件,并从中读取所有配置部分。有关选项2的更多详细信息,请参阅

希望这能提供足够的信息