c#在运行时从文件加载connectionString

c#在运行时从文件加载connectionString,c#,initialization,config,C#,Initialization,Config,我已经有了一个应用程序(控制台),它正在从bin目录读取连接字符串 我们计划从命令行传递一个指向配置的目录路径。这样,我们就可以通过更改“ConfigurationDirectory”的命令行参数在指向不同数据库之间切换 这需要我们动态加载connectionstring,我的连接字符串的格式如下: <connectionStrings> <add name="DB1" connectionString="Data Source=DB;Initial Catalog=s

我已经有了一个应用程序(控制台),它正在从bin目录读取连接字符串

我们计划从命令行传递一个指向配置的目录路径。这样,我们就可以通过更改“ConfigurationDirectory”的命令行参数在指向不同数据库之间切换

这需要我们动态加载connectionstring,我的连接字符串的格式如下:

<connectionStrings>
    <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" />
    <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" />
  </connectionStrings>
我无法使用当前的connectionstring文件,因为它抱怨没有配置标记

问题是,我的代码已经使用以下内容来初始化连接字符串:

ConfigurationManager.ConnectionStrings["DB1"].ConnectionString

使用这种新方法,上面的行似乎不起作用,并且总是给我空值,有没有办法让我不必更改现有代码?

如果将外部配置文件包装在一个块中,如下所示:

<configuration><br>
    <connectionStrings><br>
        <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
        <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
      </connectionStrings><br>
</configuration>






您的代码应该可以工作。

为什么不直接将连接字符串传递到命令行上的可执行文件?因为我们也初始化了AppSettings文件,它只是一个目录路径,我们传递的参数不是实际的文件名。
<configuration><br>
    <connectionStrings><br>
        <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
        <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
      </connectionStrings><br>
</configuration>