2015-09-17 3 views
0

У меня есть два проекта: UI (приложение Winforms) и Core (dll). Каждый проект должен иметь свой конфигурационный файл.различные файлы конфигурации на проектах C#

Например:

Ядро проекта (settings.config)

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="environment" value="development"/> 
    </appSettings> 
</configuration> 

проект пользовательского интерфейса (app.config)

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="skin" value="win"/> 
    </appSettings> 
</configuration> 

из ядра Я прочитал settings.config как:

System.Configuration.ConfigurationFileMap fileMap = new System.Configuration.ConfigurationFileMap("settings.config"); 
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap); 
string environment = configuration.AppSettings.Settings["environment"].Value; 

На этот момент падает и сбрасывает меня, что он не может отличить System.Configuration.DefaultSection до System.Configuration.AppSettingsSection.

+1

Вы уверены, что хотите на уровне машина конфигурации? Если вы не сделаете что-то особенное и вместо этого просто скопируйте config рядом с DLL во время сборки, вы будете использовать конфигурацию уровня Exe, как показано на http://stackoverflow.com/questions/594298/c-sharp-dll-config-file –

ответ

0

Я думаю, что вам нужно это

 ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap() 
     { 
      ExeConfigFilename = "settings.config" 
     }; 
     var configuration = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, 
      ConfigurationUserLevel.None); 
     var section = (AppSettingsSection)configuration.GetSection("appSettings"); 
     string value = section.Settings["environment"].Value; 
Смежные вопросы