在同一解决方案中集中连接多个项目的连接字符串

18

我目前的解决方案中有三个项目,它们都有自己的App.config文件,并且具有完全相同的连接字符串。

是否有一种方法可以合并连接字符串和app.config文件,以便我只需要更改一个位置就可以了?


1
可能是在多个Web项目之间共享连接字符串的重复问题。 - pedrommuller
3个回答

24

您可以按照以下步骤在解决方案中的多个项目之间共享连接字符串:

  1. 在解决方案文件夹下创建一个名为ConnectionStrings.config的文件,并在其中添加包含 connectionStrings 部分的连接字符串信息。

  2. 将此配置文件作为链接(添加现有项,添加为链接)添加到您的项目中。

  3. 选择已添加的文件,并将其属性 Copy to Output Directory 设置为 始终复制仅在较新时复制
  4. 在您的项目的 App.config 中,使用 configSource 属性指向链接的 ConnectionStrings.config 文件: <connectionStrings configSource="ConnectionStrings.config" />

ConnectionStrings.config

<connectionStrings>
    <add name="myConnStr" connectionString="Data Source=(local); Initial Catalog=MyDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    ...
    <connectionStrings configSource="ConnectionStrings.config" />
    ...
</configuration>

查看更多详细信息....


1
除非你亲自尝试,否则你无法理解它;不要等待别人为你测试代码。 - Stacked
2
很好的答案,如果你要复制到输出目录,可能需要添加“bin\”前缀。<connectionStrings configSource="bin\ConnectionStrings.config" /> - Andrew M.
如果我需要在调试和发布模式下分别使用两个不同的连接字符串,该怎么办(例如Web.Debug.config和Web.Debug.Release)? - JohnB
非常好的处理方式。谢谢,@Stacked。我有一个类似于JohnB的问题:您能在此共享配置文件上执行转换吗? - Alex
比起只是链接到没有上下文或讨论的404页面,这要好得多。非常有效! - Phillip Copley
@JohnB 我猜您会有ConnectionStrings.Debug.config和ConnectionStrings.Release.config文件,您需要在每个项目中链接并在Web.Debug.config或Web.Release.config或App.Debug.config或App.Release.config中引用它们。 不过这样会产生很多文件复制:/ - br3nt

4
有几种方法可以实现:
  1. 将常见的配置设置放在machine.config文件中,如此处所示。
  2. 将常见的配置设置放在一个中央文件中,并在每个项目的app.config文件中链接到该文件,如此处所示。
  3. 将配置设置存储在注册表中。
对我来说,我总是使用最后一种解决方案 :) 祝你好运!

第二个选项似乎是最理想的,但链接已经失效了。您能否修复它? - Del Lee
@DelLee 我刚刚修复了链接 ;) - Obama
6
链接又坏了,请你修复一下,谢谢。 - Austin

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接