将配置文件的内容读入与其关联的DLL中

时间:2012-03-19 00:33:30

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

我在dll应用程序的设置中保存了字符串。我想退休他们。

这是我的dll的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxxxxxxx" >
            <section name="Search.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <PishiSearch.Properties.Settings>
            <setting name="ReadIndex" serializeAs="String">
                <value>C:\Index</value>
            </setting>
            <setting name="WriteIndex" serializeAs="String">
                <value>C:\WriteIndex</value>
            </setting>
        </PishiSearch.Properties.Settings>
    </applicationSettings>
</configuration>

它与我的dll位于同一目录中。它被称为:Search.dll.config 我的dll叫做:Search.dll

我想从此配置文件中读取ReadIndex和WriteIndex的值到我的dll中。

以下是代码:

    var executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
    var location = executingAssembly.Location; //C:\MyApp\bin\Debug\Search.dll
    var config = ConfigurationManager.OpenExeConfiguration(location);
    var sections = config.Sections; //count of this is 21
    ConfigurationSectionGroup csg = config.GetSectionGroup("applicationSettings");
    ConfigurationSectionCollection csc = csg.Sections;
    ConfigurationSection cs = csc.Get("Search.Properties.Settings");

代码可以在这里获取最后一行。但是如何获取设置字符串?

是的我可以使用cs.SectionInformation.GetRawXml();获取xml,然后查询它以获取值,但这是一个kluge。
我如何阅读这些值?最好进入一个Settings对象?非常感谢!

2 个答案:

答案 0 :(得分:2)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <applicationSettings>

    </applicationSettings>
    <appSettings>
        <add key="ReadIndex" value="C:\Index"/>
    </appSettings>
</configuration>


var executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
var location = executingAssembly.Location; //C:\MyApp\bin\Debug\Search.dll
var config = ConfigurationManager.OpenExeConfiguration(location);
var sections = config.Sections; //count of this is 21
string s = config.AppSettings.Settings["ReadIndex"].Value.ToString();

答案 1 :(得分:0)

您必须在Visual Studio中的文件“ app.config ”中将标记“ appSettings ”添加到标记“配置

像吼叫:

<configuration>
    <appSettings>
        <add key="ReadIndex" value="aaa"/>
        <add key="WriteIndex" value="111"/>
    </appSettings>
</configuration>

然后在c#

中使用此波纹管代码
var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["ReadIndex"].Value;
string password = appConfig.AppSettings.Settings["WriteIndex"].Value;

如果要更新配置,可以打开“Search.dll.config”文件,然后进行更新。

请参阅以下答案:

Reading dll.config (not app.config!) from a plugin module