19

I currently have three projects in my solution that all have their own App.config file with the same exact connection string.

Is there a way to consolidate the connections strings / app.config files so that I only need to make changes to one location?

1

3 Answers 3

25

You can share the connection strings among multiple projects in a solution as follows:

  1. Create a ConnectionStrings.config file with your connection strings under a solution folder, this file should contain only the section connectionStrings

  2. In your projects, add this config file As a Link (add existing item, add as link)

  3. Select the added file and set its property Copy to Output Directory to Copy always or Copy if newer
  4. In the App.config of your projects, point to the linked ConnectionStrings.config file using the configSource attribute: <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>

Read more details....

Sign up to request clarification or add additional context in comments.

7 Comments

You can't figure it out until you give it a try ;) don't wait for others to test code for you.
Great answer, you may need to add 'bin\' prefix if are you copying to output directory. <connectionStrings configSource="bin\ConnectionStrings.config" />
And what if I need two separate connection strings for debug and release (like Web.Debug.config and Web.Debug.Release)?
Very good way to handle this. Thanks, @Stacked. I've got a question similar to the one from JohnB's: can you perform transformations on this shared configuration file?
Much better than just linking to 404 pages with no context or discussion. Works great!
|
4

There's a few ways you could do it:

  1. Put common configuration settings in machine.config as shown here
  2. Put common configuration settings in a central file and link to that in each projects's app.config as shown here
  3. Store the configuration settings in the registry

For me, i always work with the last solution :) Good luck!

4 Comments

The second option seems to be the most desirable, but the link is broken. Can you please fix it?
@DelLee i just fixed the link ;)
The link is broken again. Can you fix this, please?
You shouldn't link to other pages without also adding the info to SO. See: meta.stackoverflow.com/a/254430/769294
3

First, take a look at this post. It describes how you can share the same app.config between multiple projects.

How to Share App.config?

Second, take a look at one other post, which describes how you let different app.config-files have a reference to one single shared xml-file which contains the connection strings.

Use XML includes or config references in app.config to include other config files' settings

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.