如何在一个项目中使用多个应用程序配置文件?

时间:2014-07-03 15:12:22

标签: c# .net visual-studio

创建新的Visual C#控制台应用程序(.NET Framework 4.5)后,此类项目包含默认的App.config文件。

New Visual C# Console Application

将System.Configuration的引用添加到项目并在某个源文件using System.Configuration;中使用它之后,我可以使用静态类ConfigurationManager来操作App.config文件。但之前,我想在文件中添加一些设置,所以它有点像这样:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="DeployWeb" value="true" />
  </appSettings>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

现在,我可以写这样的东西,以获得设置的值:

Boolean deployWeb = false;
Boolean.TryParse(ConfigurationManager.AppSettings["DeployWeb"], out deployWeb);

但是我没有设置要读取的配置文件,但是没关系,因为有默认配置文件。但我可以通过右键单击项目添加更多配置文件 - &gt;添加 - &gt;新物品...... - &gt;应用程序配置文件,例如,我有5个配置文件,如图所示:

Several configuration files in a project

ConfigurationManager仍会读取默认值,但我想手动控制要使用的配置文件。我想知道,是否有适当的方法设置为ConfigurationManager配置文件名使用等,如果这不是一个坏习惯。我知道如何在调试/发布模式下使用不同的配置,但在我的情况下,我有一个应用程序,例如,可以在不同的模式下运行以用于发布中的不同目的。

问题:是否可以在项目中包含多个配置文件,并且能够切换我想要使用的配置文件。这不是一个坏习惯,我是否应该使用另一种方法来实现我的目的?在我的情况下使用构建事件是不合适的(我认为)。

PS。我很抱歉拉伸我的问题,但是我很简单,只能用两句话来问,但正如rules所说,问题应该包含细节。< / p>

更新: 从已经existing answer“选项:您可以使用ConfigurationManager类按代码加载备用配置文件。”从阅读msdn开始,我没有得到我应该使用哪种方法。我应该打开Exe配置吗?

1 个答案:

答案 0 :(得分:10)

可以使用映射配置文件

完成
ExeConfigurationFileMap configFileMap = 
        new ExeConfigurationFileMap();
    configFileMap.ExeConfigFilename = "App4.config"; // full path to the config file

    // Get the mapped configuration file
   Configuration config = 
      ConfigurationManager.OpenMappedExeConfiguration( 
        configFileMap, ConfigurationUserLevel.None);

   //now on use config object

AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings");