【问题标题】:Storing database settings outside app.config在 app.config 之外存储数据库设置
【发布时间】:2010-12-30 00:35:45
【问题描述】:

我一直在编写一个将在实时 Web 服务器上运行的 c# exe,但我希望能够在我们的登台服务器上对其进行测试。由于登台服务器与我的本地主机具有不同的数据库设置(在 app.config 中),有什么方法可以将连接字符串存储在 app.config 之外,以便我可以轻松访问它?

另外,是否可以存储数据库连接字符串,然后通过 app.config 访问它?这听起来可能很奇怪,但我使用的是来自 CMS 的 dll,它使用 .config 文件中的值。

【问题讨论】:

  • 为什么不为每个环境使用不同的 app.config 文件?这本质上是配置文件的重点,提供该环境所需的设置。

标签: c# app-config application-settings


【解决方案1】:

在每个位置使用不同的 app.config 怎么样?

【讨论】:

  • 是否可以将 app.config 存储在 .exe 之外?当我完成构建 (TFS) 后,似乎没有 app.config 与 web.config 一样
  • 这是我通常做的。为避免错误,请在源代码管理中维护这两个配置文件,使用不同的名称和在您正在部署的位置之外的位置,并确保您的部署脚本在更新过程中自动安装正确的配置文件。
【解决方案2】:

您可以将任何 .NET 配置部分“外部化”到一个单独的文件中,并从 app.config 引用它。

所以在你的情况下,你会在app.config

<connectionStrings configSource="connectionstrings.dev.config" />

然后为例如创建单独的配置DEV、TEST、PROD 环境,具有不同的名称。他们的内容是:

<?xml version="1.0"?>
<connectionStrings>
   -- your connection string here, as normal
</connectionStrings>

您可以任意数量的这些单独文件,切换仅意味着更改主 app.config 中的一行以引用适当的外部 connectionstrings.ABC.config 文件。

【讨论】:

  • 好的,我的 app.config 配置设置指向另一个文件。是否可以在我运行它的每台机器上更改 app.config 而无需为每台机器重新构建一次应用程序?
【解决方案3】:

取而代之的是,如何在app.config 中创建带有前缀的数据库设置,例如DevConnectionStringProdConnectionString。然后,再创建一个app.config 元素,告诉您您所处的环境。

在开发期间,该环境设置为“Dev”。 部署代码时,将app.config 中的环境元素更改为“Prod”。

当您想在代码中检索数据库设置时,您首先检查环境值,然后相应地选择数据库设置。

这个主题的一个变体是在每台机器上的 Windows 中创建一个环境变量,并在您的代码中查询它。

【讨论】:

    【解决方案4】:

    您可以将它存储在您想要的位置:在文本文件中,在环境变量中,将其作为命令行参数传递。

    您只需要编写代码来读取连接字符串并将其传递给您的数据访问。

    当你告诉我们你如何访问你的数据库时,我可以告诉你如何传递连接字符串。

    但也许每个环境使用不同的配置文件会更好。

    【讨论】:

      【解决方案5】:

      您可以为连接字符串滚动您自己的配置,在适合当前环境的情况下调用它,例如dev.config、qa.config、prod.config 等,并将其名称保留在 App.config 中。

      此外,您可以在 Machine.config 中添加一条记录,例如称为 Environment 并在阅读 App.config 以确定环境配置时考虑它,即:

      机器配置:

      <environment name="Dev" />
      

      App.config:

      <environments>
          <environment name="Dev" config="dev.config" />
          <environment name="QA" config="qa.config" />
          ...
      </environments>
      

      【讨论】:

        【解决方案6】:

        这取决于您如何使用它。它只是一个字符串,所以基本上你可以将它存储在任何你喜欢的地方,但是如果你使用的库希望连接字符串在 app.config 中,你就必须找到一种不同的方式来提供字符串。

        app.config 文件很容易获得。它只是一个 XML 格式的文本文件,因此您可以使用任何文本编辑器进行编辑,例如记事本。它在部署后不会被命名为app.config,它从应用程序的名称中获取文件名,扩展名为.config

        【讨论】:

          猜你喜欢
          • 2012-02-19
          • 2023-04-09
          • 2016-12-25
          • 1970-01-01
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          • 2010-12-01
          • 2010-11-05
          相关资源
          最近更新 更多