Есть 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?
ConfigurationManager все же может вам помочь. Если это исполняемое приложение то можно так попробовать
var config = ConfigurationManager.OpenExeConfiguratio(string pathToExe);
Или, если речь идет о сборке, которая загружена в текущий домен, то возможен такой вариант.
var assemblyLocation = typeof(TargetType).GetType().Assembly.Location
var config = ConfigurationManager.OpenExeConfiguratio(assemblyLocation);
В общем ошибка в том, что метод 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;
Продвижение своими сайтами как стратегия роста и независимости