чтение содержимого файла конфигурации в dll, связанную с ним - PullRequest
2 голосов
/ 19 марта 2012

Я сохранил строки в настройках приложения 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, а затем опросить его, чтобы получить значения, но это клуг.
Как мне прочитать значения? Желательно в объект настроек? Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 19 марта 2012
<?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();
0 голосов
/ 15 ноября 2016

Вы должны добавить тег " appSettings " в тег " configuration " в вашем файле " app.config " в visual studio

как показано ниже:

<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" изатем обновите его.

см. приведенный ниже ответ:

Чтение dll.config (не app.config!) из модуля плагина

...