Завантаження спеціальних файлів конфігурації


119

Я знаю, що можу відкривати конфігураційні файли, пов'язані зі складанням статичним ConfigurationManager.OpenExe(exePath)методом, але я просто хочу відкрити конфігурацію, не пов’язану з збіркою. Просто стандартний конфігураційний файл .NET.

Відповіді:


244

статті, розміщені Рікі, дуже хороші, але, на жаль, вони не відповідають на ваше запитання.

Щоб вирішити свою проблему, слід спробувати цей фрагмент коду:

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

Якщо вам потрібно отримати доступ до значення в налаштуваннях, ви можете скористатися оператором індексу:

config.AppSettings.Settings["test"].Value;

1
@Oliver От whateverYouLikeExtension, ти маєш на увазі, що ти повинен щось мати після config.?
Свиш

4
@Oliver Ви повинні спробувати зараз, і, здається, добре спрацює без :)
Свиш

1
Я це зробив, але коли я отримую доступ до ConfigurationManager.ConnectionStrings, я все ще отримую старі дані. Що я пропускаю?
MAW74656

1
@ MAW74656: Вам не потрібно мати доступ ConfigurationManager.ConnectionStrings. Натомість вам слід прочитати значення з configоб’єкта, поверненого з останнього твердження вище.
Олівер

3
Для всіх, хто шукає, як отримати програму AppSettings після цього: var foo = config.AppSettings.Settings ["тест"].
Роро

8

Конфігураційний файл - це лише XML-файл, відкрити його можна за допомогою:

private static XmlDocument loadConfigDocument()
{
    XmlDocument doc = null;
    try
    {
        doc = new XmlDocument();
        doc.Load(getConfigFilePath());
        return doc;
    }
    catch (System.IO.FileNotFoundException e)
    {
        throw new Exception("No configuration file found.", e);
    }
    catch (Exception ex)
    {
        return null;
    }
}

і пізніше отримання значень за допомогою:

    // retrieve appSettings node

    XmlNode node =  doc.SelectSingleNode("//appSettings");

Недоступний код виявлений після throw new Exception("No configuration file found.", e);.
Ойбек

Я видалю нульове повернення, воно дійсно не буде досягнуто.
Otávio Décio

7
навіщо використовувати XML, коли у вас такі чудові класи з бібліотеки .Net. Я б не пропонував використовувати це, погано в дизайні. Що далі? реалізувати інший клас рядків ... врахуйте це.
Юкі

@ OtávioDécio Чи можу я додати system.diagnostics, щоб дозволити відстеження у власному файлі .config?
FaizanHussainRabbani

@FaizanRabbani не впевнений у користувацькому відстеженні, але відповідно до msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx ви повинні мати змогу додати діагностику у конфігураційний файл.
Otávio Décio

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.