我正在尝试将app.config文件拆分为多个文件,以便更轻松地管理不同环境所需的差异。有些部分很容易......
<system.diagnostics>
various stuff
</system.diagnostics>
成了
<system.diagnostics configSource="ConfigFiles\system.diagnostics.dev" />
将“各种内容”移动到system.diagnostics.dev文件。
但对于system.serviceModel
部分,这似乎不起作用。
现在我已经阅读了它对system.serviceModel
本身不起作用的建议,但它适用于其下的部分:bindings
,client
,diagnostics
,但是当我尝试将configSource与其中一个一起使用时,同样的事情发生在我身上。当我放入
<system.serviceModel>
<bindings configSource="ConfigFiles\whateverFile.dev" />
我明白了:
未声明'configSource'属性。
有没有人见过这个?你知道解决方案吗? (也许我有一个过时的架构或什么?)
答案 0 :(得分:65)
VS.NET的编辑器对配置感到呻吟,但它确实有效。
我有这样的配置......
<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>
......工作正常。
答案 1 :(得分:24)
它将 NOT 在<system.serviceModel>
上工作,因为这是一个配置SectionGroup - 而不是配置部分。
将在运行时在<system.serviceModel>
以下的任何地方工作得很好 - 我们一直这样做。马丁的回答很好地说明了 - 他的样本会起作用。
答案 2 :(得分:6)
将配置部分移动到单独的文件时需要注意的一点是:确保分离的配置文件不包含configSource属性。例如,如果你将绑定部分分开,那么
<system.serviceModel>
<bindings configSource="yourConfigFile.config" />
</system.serviceModel>
确保您的实际绑定文件不包含“configSource”属性:
<?xml version="1.0" encoding="utf-8"?>
<bindings>
<!-- binding configuration stuff -->
</bindings>
我知道这似乎很明显,但是如果你输入configSource属性,然后剪切并粘贴到一个新文件中,很容易忘记取出该属性。
希望这有帮助。