创建新的 Visual C# 控制台应用程序 (.NET Framework 4.5) 后,此类项目包含默认的 App.config 文件。
将 System.Configuration 的引用添加到项目中并在一些源文件中使用它 using System.Configuration;
我可以使用静态类 ConfigurationManager
来操作 App。配置文件。但是之前,我想在文件中添加一些设置,所以它有点像这样:
<?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
配置文件名等,这是否不是一个坏习惯。我知道如何在调试/ Release模式下使用不同的配置,但在我的例子中,我有一个应用程序,例如,它可以在发布时以不同的模式运行以用于不同的目的。
问题:是否可以在一个项目中有多个配置文件,并且能够切换我想使用的配置文件。这不是一种不好的做法吗,我应该使用另一种方法来达到我的目的吗?使用构建事件不适合我的情况(我认为)。
PS. 很抱歉我的问题太长了,但是我的问题很简单,可以用两句话来问,但是作为 rules说,问题应该包含详细信息。
更新: 从已经existing answer “选项:您可以使用 ConfigurationManager 类通过代码加载备用配置文件。”来自阅读msdn我不知道应该使用哪种方法。我应该打开 Exe 配置吗?
最佳答案
可以使用映射的配置文件来完成,
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");
关于c# - 如何在一个项目中使用多个应用程序配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557437/