Reputation: 210080
I'm trying to split an app.config file into multiple files to make it easier to manage the differences needed for different environments. With some sections it was easy...
<system.diagnostics>
various stuff
</system.diagnostics>
became
<system.diagnostics configSource="ConfigFiles\system.diagnostics.dev" />
with the "various stuff" moved to the system.diagnostics.dev file.
But for the system.serviceModel
section this doesn't seem to work.
Now I've read suggestions that it doesn't work for system.serviceModel
itself, but it works for the sections underneath it: bindings
, client
, diagnostics
, etc. But the same thing happens to me when I try to use configSource with one of them. When I put in
<system.serviceModel>
<bindings configSource="ConfigFiles\whateverFile.dev" />
I get:
The 'configSource' attribute is not declared.
Has anyone else seen this? Do you know a solution? (Perhaps I have an out-of-date schema or something?)
Upvotes: 36
Views: 17032
Reputation: 81
One thing to be aware of when moving your config sections to separate files: make sure your separated config file does NOT contain a configSource attribute. For example, if you split your your bindings section out like so,
<system.serviceModel>
<bindings configSource="yourConfigFile.config" />
</system.serviceModel>
make sure that your actual bindings file doesn't contain the "configSource" attribute:
<?xml version="1.0" encoding="utf-8"?>
<bindings>
<!-- binding configuration stuff -->
</bindings>
I know that might seem obvious, but if you enter the configSource attribute, then cut and paste into a new file, it's easy to forget to take the attribute out.
Hope this helps.
Upvotes: 8
Reputation: 11544
VS.NET's editor moans about the config, but it works.
I have config like this...
<system.serviceModel>
<behaviors configSource="config\system.servicemodel.behaviors.config" />
<bindings configSource="config\system.servicemodel.bindings.config" />
<client configSource="config\system.servicemodel.client.config" />
</system.serviceModel>
... which works fine.
Upvotes: 71
Reputation: 754230
It will NOT work on <system.serviceModel>
since that's a configuration SectionGroup - not a configuration Section.
It WILL work just fine at runtime on anything below <system.serviceModel>
- we do this all the time. Martin's answer shows it nicely - his sample will work.
Upvotes: 24