如何在 web.config 中处理多个开发人员环境

how to handle multiple developer environment in web.config

假设我们有三个环境 dev、qa 和 prod。除此之外,所有开发人员都有自己的环境。您如何管理每个环境的连接字符串或应用程序设置?

我相信对于开发、质量检查和生产,我可以使用 web.config 转换(网上有很多关于如何做的资源)。但我对如何以可管理的方式设置开发人员设置感到困惑。我们一直在做的一种方式是

--web.config--
<add name="oracle_user1" connectionString="Data Source=DevDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_user2" connectionString="Data Source=QaDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_dev" connectionString="Data Source=DevDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_qa" connectionString="Data Source=QaDB;..." providerName="Oracle.DataAccess.Client"/>
<add name="oracle_prod" connectionString="Data Source=ProdDB;..." providerName="Oracle.DataAccess.Client"/>
--code--
string conString = ConfigurationManager.AppSettings["oracle_" + Environment.GetEnvironmentVariable("AppEnv")]

这是执行此操作的标准方法吗?

我们处理这个问题的方法是对连接字符串使用一个单独的配置,它被排除在存储库之外。

在 Web.Config 中,连接字符串部分如下所示:

<connectionStrings configSource="Config\ConnectionStrings.config" />

配置文件夹有两个文件:

  • ConnectionStrings.Config
  • ConnectionStrings.Config.模板

模板文件包含以下内容:

<connectionStrings>
    <add name="ConnectionString" connectionString="[...]" providerName="System.Data.SqlClient" />
</connectionStrings>

每个开发人员将其复制到一个名为 ConnectionStrings.config 的新文件中,并编辑连接字符串以反映他们的机器。

您也可以使用相同的方法来外部化其他配置设置。