У меня была такая же проблема с установщиком сервиса. Вы должны вызвать ваш файл конфигурации "myService.exe.config" и использовать метод OpenExeConfiguration с путем сборки, чтобы найти правильный файл конфигурации (как объясняется в первом ответе, когда ваши установщики запускаются, базовый каталог каталог установки, а не вашего установщика)
{
Assembly __ServiceAssembly = Assembly.GetAssembly(typeof(MyServiceInstaller));
Configuration config = ConfigurationManager.OpenExeConfiguration(__ServiceAssembly.Location);
KeyValueConfigurationCollection svcSettings = config.AppSettings.Settings;
info("Service name : " + svcSettings["ServiceName"].Value);
}
Если вы не хотите использовать формат «myService.exe.config», используйте exeConfigurationFileMap:
{
Assembly __ServiceAssembly = Assembly.GetAssembly(typeof(SyslogServiceInstaller));
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
configFileMap.ExeConfigFilename =
Path.Combine(Directory.GetParent(__ServiceAssembly.Location).ToString(),
"App.config");
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(
configFileMap, ConfigurationUserLevel.None);
KeyValueConfigurationCollection mySettings = config.AppSettings.Settings;
Console.Out.WriteLine(mySettings["ServiceName"].Value);
}