Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Application Wide Settings Available to All Projects

Tags:

c#

settings

I have a Solution with 3 projects in, each project needs access to certain settings. I'm looking for a way to have these setting values available to any project from 1 distinct source. I cant use the .Config file as that is relevent to that particular project.

I could use the database but have been told this is not good practice (Without an reason)

Any ideas?

like image 250
LiamB Avatar asked Dec 13 '22 21:12

LiamB


2 Answers

You could do this:

  • create a solution.config in your solution folder
  • in each project's app.config, add this to your <appSettings> node:

    <appSettings file="solution.config">
      ....
    </appSettings>
    

You would have to put symbolic links to your common solution.config in each project folder - but you could have one single physical file that you share amongst the projects.

The <appSettings> node is the only one that allows that sort of "cummulative" settings - those from the file specified in the file= will be added to your app settings, but potentially overwritten by anything you specify explicitly in your app.config.

On the other hand, yes, of course, you could use the database. We do that, too, in most of our projects, since we typically do have access to the database, but not to the file system in the client's server machines. I don't see why that should necessarily be a bad thing - we have settings for DEV, TEST and PROD in a table - so you have all your settings in one place - and we pick those settings we need when we need them. Works just fine - of course, some settings like the connection strings to the database cannot be stored there - but the bulk of our config info is. Again: I really don't see any reason why this should be a bad choice per se - so unless your source can back his/her statement up with some facts and reasons, I'd ignore it.

like image 182
marc_s Avatar answered Jan 15 '23 05:01

marc_s


You can define configSource attribute in a defined configSection, to reference an external file from which to load your properties. Here you can find an example:

Is there any way for an App.config file to reference another full config file? (.NET)

You can also use a DB of course, but that would probably involve developing some kind of configuration console, since it's not a good practice to manage config attributes directly into DB.

Otherwise you can create your config file (an xml, or yaml for example) and create your own shared config parser.

like image 36
mamoo Avatar answered Jan 15 '23 03:01

mamoo