是否可以将applicationSettings移动到另一个配置文件,因为可以使用connectionStrings或appSettings?
当我使用设计器为我的Web应用程序创建设置时,我在web.config中获取了applicationSettings部分,例如:
<applicationSettings>
<TestWebApplication.Properties.Settings>
<setting name="AnotherSetting" serializeAs="String">
<value>Another setting value</value>
</setting>
</TestWebApplication.Properties.Settings>
</applicationSettings>
我希望能够将它们移动到另一个文件,例如appSettings:
<appSettings configSource="config\appsettings.config"/>
我正在使用一个项目,该项目通过使用设计器和web.config生成的类访问了很多设置,在多个环境之间很难维护。如果我可以强制设置类使用appSettings而不是applicationSettings,那会更好。
有可能吗?
提前感谢您的帮助。
答案 0 :(得分:25)
Waaaay迟到了这个问题,但我刚刚在这个问题上撞到了墙上。事实证明,你可以这样做,只是不是为整个applicationSettings节点,你必须分别做applicationSettings的每个子节点。我从MSDN SectionInformation.ConfigSource文章的底部获得了魔法信息。
<applicationSettings>
<TestWebApplication.Properties.Settings configSource="externalfile.config" />
</applicationSettings>
<TestWebApplication.Properties.Settings>
<setting name="AnotherSetting" serializeAs="String">
<value>Another setting value</value>
</setting>
</TestWebApplication.Properties.Settings>
答案 1 :(得分:2)
是的,当然有可能!任何配置文件中的任何ConfigurationSection都可以通过configSource =“otherConfigFile.config”属性“外部化”。
如果可以的话会更好 force要使用的Settings类 appSettings不是applicationSettings。
为了做到这一点,你需要远离在.NET中使用漂亮的可视化“设置”类并直接使用ConfigurationManager。这样,您就可以将设置放入&lt; appSettings&gt;并使用ConfigurationManager.AppSettings [“keyname”]读取它们。
马克
答案 2 :(得分:1)
如果是我的项目,我将摆脱applicationSettings并将所有内容移至appSettings部分。 applicationSettings的值是可以强类型化值并且可用于Intellisense。这些都不是特别有利于你的情况。当然,如果您仍在通过设计师创建设置,那么移动所有内容的重大打击是不值得的。
答案 3 :(得分:0)
抱歉缺乏特异性;我不是那个实施解决方案的人,随着时间的推移它对我来说有点模糊。我确实记得我们能够做到这一点,我认为我的回忆对于我们如何做到这一点是准确的。
答案 4 :(得分:0)
这个问题在很长一段时间内没有被标记为答案。 好吧,在marc_s回答下,有评论说明这是不可能的。我不想将marc_s的答案标记为已接受的答案,因为评论的内容与答案完全相反。 所以答案是,不幸的是,这是不可能的。