在C#应用程序中动态使用多个配置文件

时间:2017-05-08 01:36:43

标签: c# config app-config

我已就此进行了大量研究,并尝试了多种方法,但我开始认为我想做的事情无法完成。即 - 我正在构建一个将由多个客户端使用的应用程序。每个客户端都有自己的数据库连接要求,以及它们自己的一组自定义,以控制应用程序的某些行为。

我想要做的是为每个客户端创建一个.config文件,然后使用命令行参数指定要加载的.config文件。每个配置文件都有自己的部分,也有自己的部分。我已经完成了大部分文档,包括ConfigurationManager和Configuration类,并尝试了许多不同的方法,所有方法都失败了。

基本问题是"当我打开.config文件时,如何告诉应用程序将此.config作为默认配置?"例如,当我稍后引用appSettings中的值或数据库连接字符串时,如何确保每个引用都映射到我已加载的自定义配置,而不是Visual Studio默认创建的引用? / p>

我找到了各种对加载配置文件的引用,但没有任何内容告诉我如何用我刚加载的那个动态替换标准文件。我一直以零引用异常结束并一直运行到砖墙中。

1 个答案:

答案 0 :(得分:0)

您可以在配置文件中定义多个连接字符串,然后按名称引用它们。 例如:

<configuration>
    <connectionStrings>
       <add name="client1Connection"
            connectionString="Data Source=(local);Initial Catalog=dbclient1;Integrated Security=True"
            providerName="System.Data.SqlClient" />
       <add name="client2connection"
            connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=dbclient2;Integrated Security=True"
            providerName="System.Data.SqlClient" />
       ...
     </connectionStrings>
</configuration>

您可以通过以下方式在c#代码中引用它们:

string client1ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["client1Connection"].ConnectionString;
string client2ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["client2connection"].ConnectionString;