【问题标题】:How can I use several Application Configuration Files in one project?如何在一个项目中使用多个应用程序配置文件?
【发布时间】:2014-08-24 19:08:57
【问题描述】:

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

在将 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);

但是我没有设置读取哪个配置文件,不过没关系,因为有默认的。但是我可以通过右键单击项目->添加->新建项目...->应用程序配置文件来添加更多配置文件,这样我就有了例如5个配置文件,如图所示:

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

问题:是否可以在一个项目中拥有多个配置文件,并且能够切换我要使用的配置文件。这不是一个不好的做法,我应该使用其他方法来达到我的目的吗?在我的情况下使用构建事件不合适(我认为)。

PS.很抱歉我的问题延伸了,但我的问题很简单,可以用两句话问,但正如rules 所说,问题应该包含详细信息。

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

【问题讨论】:

  • @Jonesy 是的,我看到了这个问题,我刚刚更新了我的问题,你能看看..
  • 使用ConfigurationManager 类需要显式引用System.Configuration.dll,因为在C# 项目模板中默认不引用此程序集。

标签: c# .net visual-studio


【解决方案1】:

可以使用映射的配置文件来完成,

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");

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 2017-11-15
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多