Question

Is it possible to move applicationSettings to another config file as it is possible with connectionStrings or appSettings?

When I create Settings for my web application using the designer I get applicationSettings section in my web.config such as:

  <applicationSettings>
    <TestWebApplication.Properties.Settings>
      <setting name="AnotherSetting" serializeAs="String">
        <value>Another setting value</value>
      </setting>
    </TestWebApplication.Properties.Settings>
  </applicationSettings>

I would like to be able to move them to another file like appSettings:

<appSettings configSource="config\appsettings.config"/>

I'm working with a project that has lots of settings accessed through class generated with designer and web.config is extremely hard to maintain between multiple environments. It would be even better if I could force Settings class to use appSettings not applicationSettings.

Is it possible?

Thanks in advance for help.

Was it helpful?

Solution 5

This question was not marked as answer for quite a long time. Well, under marc_s answer there are comments that explain that this is impossible. I didn't want to mark marc_s answer as accepted answer because the comments say exactly opposite thing than the answer. So the answer is that, unfortunately, it is not possible.

OTHER TIPS

Waaaay late for this question, but I've just been banging my head against the wall over this one. Turns out you can do this, just not for the entire applicationSettings node, you have to do each child node of the applicationSettings separately. I got the magic info from the bottom of the MSDN SectionInformation.ConfigSource article.

app.config/web.config contents

<applicationSettings>
    <TestWebApplication.Properties.Settings configSource="externalfile.config" />
</applicationSettings>

externalfile.config contents:

<TestWebApplication.Properties.Settings>
    <setting name="AnotherSetting" serializeAs="String">
        <value>Another setting value</value>
    </setting>
</TestWebApplication.Properties.Settings>

Yes of course it's possible! Any ConfigurationSection in any of your config files can be "externalized" by means of the configSource="otherConfigFile.config" attribute.

It would be even better if I could force Settings class to use appSettings not applicationSettings.

In order to do that, you need to get away from using the nice visual "Settings" classes in .NET and use the ConfigurationManager directly. That way, you can put your settings into <appSettings> and read them in using ConfigurationManager.AppSettings["keyname"].

Marc

If it were my project, I'd get rid of the applicationSettings and move everything to the appSettings section. The value of applicationSettings is that the values can be strongly typed and available to Intellisense. Neither of those are especially advantageous to your situation. Of course, that big hit of moving everything isn't worth it if you are still creating settings through the designer.

Hmm... I know this is possible, because I know we were doing this at a previous job. I do not remember exactly how, though. I believe that we had a parent project that we were using to inherit the settings from, and there was a manual step by which if we made changes to the applicationSettings in a subproject, we needed to manually copy the changes to the parent project (but then they were inherited by all the child projects).

Sorry for the lack of specificity; I wasn't the one who implemented the solution, and it's gotten a bit fuzzy for me over time. I do recall that we were able to do this, though, and I think my recollections are accurate as to how we were doing it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top