multiple config file in c#

大兔子大兔子 提交于 2019-12-25 06:58:31

问题


I have a solution containing 1 console application and 2 libraries.

In the libraries I have two different app.configs for an example my data.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="OutputFileFolder" value="c:\\log" />
    <add key="OutputIndexFile" value="c:\\log\index.xml" />
  </appSettings>
</configuration>

And in this library class I have in the constructor

_indexPath = ConfigurationManager.AppSettings["OutputIndexFile"]; 

But how should I load the Data.config file from my main console application (this should be the main config file)?


回答1:


Config files in your dll projects are not relevant at runtime. The config file (if any) in your console application project is the one that will get used.

If you want to use a configuration file in two separate projects, you can add it as a link to your second project, or you could use a post-build event to copy it over. However both of these seem a little hacky.




回答2:


Libraries don't really have associated configuration files as such - they operate under an executable (a console application, in your case).

You should put all the configuration in the app.config file of the application for the code in the libraries to have access to it.




回答3:


You can load multiple config files by have multiple Configuration instances from multiple calls to ConfigurationManager.OpenMappedExeConfiguration (add your config file to the file map, the global file will be added automatically and specify a ConfigurationUserLevel.None.

Something like:

var fileMap = new ExeConfigurationFileMap {
                    ExeConfigFilename = Path of dll's config file
             };

var cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var result = cfg.AppSettings["OutputIndexFile"];


来源:https://stackoverflow.com/questions/11761852/multiple-config-file-in-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!