Получить значение по ключу из .config

310
20 августа 2017, 03:22

Есть App.config файл принадлежащий другому приложению. Текст конфигурации записан в XmlDocument :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
    </startup>
  <appSettings>
    <add key="currentVersion" value="1.0"/>
  </appSettings>
</configuration>

Нужно получить в value как это сделать ? ConfigurationManager не работает тк это App.config другого приложения. Пытаюсь сделать так :

            var stringApp = (XMLCONFIG.GetElementById("currentVersion").Value);

Исключение = ссылка на обьект не указывает на экземпляр обьекта. Как же получить value?

Answer 1

ConfigurationManager все же может вам помочь. Если это исполняемое приложение то можно так попробовать

var config = ConfigurationManager.OpenExeConfiguratio(string pathToExe);

Или, если речь идет о сборке, которая загружена в текущий домен, то возможен такой вариант.

var assemblyLocation = typeof(TargetType).GetType().Assembly.Location
var config = ConfigurationManager.OpenExeConfiguratio(assemblyLocation);
Answer 2

В общем ошибка в том, что метод OpenExeConfiguration ожидает путь до .EXE а не до самого файла конфигурации. А для того что бы работать именно с конфигурацией не хватало ExeConfigurationFileMap

Правильно было написать так :

 var configFileMap = new ExeConfigurationFileMap();
 configFileMap.ExeConfigFilename ="path to EXE";
 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
 var confstring = config.AppSettings.Settings["currentVersion"].Value;
READ ALSO
Конвертирование VBScript в C# [требует правки]

Конвертирование VBScript в C# [требует правки]

Есть код VBScript, нужно его конвертировать в C#, но в VBS я 0, поможет кто?

438
Замена Graphics.DrawLine на DrawingContext.DrawLine

Замена Graphics.DrawLine на DrawingContext.DrawLine

Имеется код, который нормально работает в WinForms, но хочется перенести его в WPF

326
DigitalProductId не всегда находит

DigitalProductId не всегда находит

Пытаюсь получить ключ продукта windows, на win 7 работает нормально, но на других осях не показывает

293