【问题标题】:Duplicate keys under app.configapp.config 下的重复键
【发布时间】:2017-03-06 13:12:41
【问题描述】:

我有一个项目,我在其中为每个环境的连接字符串维护单独的 app.config 文件,例如,用于开发环境的 Dev.config、用于 QA 的 QA.config 等。我有一个主 app.config 文件我只需将 env 键入为“Dev”或“QA”,然后激活特定于 env 的连接字符串,如下所示。

开发配置

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
   <add name="connection1" connectionString="<dev_string>" />
   <add name="connection2" connectionString="<dev_string>"/>
</connectionStrings>

QA.config

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
   <add name="connection1" connectionString="<qa_string>" />
   <add name="connection2" connectionString="<qa_string>"/>
</connectionStrings>

App.config

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

但是,现在我有一个请求。要实现跨环境功能的地方。解决此问题的最佳方法是什么?我可以在主 app.config 中添加每个连接字符串,方法是给它一个特定于环境的名称,但我觉得这可能不是最好的方法。

那么,有没有办法仍然保留特定于 env 的配置文件并在不同命名空间下的主 app.config 中的所有环境中加载所有连接字符串或避免键重复错误?

提前感谢所有帮助...

【问题讨论】:

  • 奇数要求

标签: c# .net web-config connection-string app-config


【解决方案1】:

如果我理解正确,我可能会建议您使用默认的 xdt:Transform 语法,如 Web.Config/Debug/Release 中的语法。对于 app.config 文件,您可以使用类似这个包https://visualstudiogallery.msdn.microsoft.com/7bc82ddf-e51b-4bb4-942f-d76526a922a0

【讨论】:

  • 感谢您的回复,但我不确定这是否适合我。我正在寻找一种方法来访问代码中所有环境的连接字符串,使用相同的键“connection1”和“connection2”;可能使用类似 dev.connection1 或 qa.connection1 的命名空间。同时我想让 ConfigurationManager.ConnectionStrings["connection1"] 指向配置中设置的特定环境。这可能吗?
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 2014-05-12
  • 2011-12-10
  • 2015-08-29
  • 2019-03-21
  • 2011-02-02
  • 1970-01-01
  • 2018-05-08
相关资源
最近更新 更多