2015-09-17 41 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> 

UI项目(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; 

At这一点崩溃并转储我无法将System.Configuration.DefaultSection投到System.Configuration.AppSettingsSection

+1

您确定要机水平的配置?除非你做了非常特殊的事情,而是在构建期间拷贝配置文件到DLL旁边,你可以使用Exe level配置,如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; 
相关问题