是否可以将 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 在多个环境之间维护起来非常困难。如果我可以强制 Settings 类使用 appSettings 而不是 applicationSettings,那就更好了。

是否可以?

预先感谢您的帮助。

有帮助吗?

解决方案 5

这个问题很长一段时间没有被标记为答案。好吧,在 marc_s 的回答下,有一些评论解释说这是不可能的。我不想将 marc_s 答案标记为已接受的答案,因为评论所说的内容与答案完全相反。所以不幸的是,答案是不可能的。

其他提示

Waaaay迟到了这个问题,但我刚刚在这个问题上撞到了墙上。事实证明,你可以这样做,只是不是为整个applicationSettings节点,你必须分别做applicationSettings的每个子节点。我从 MSDN SectionInformation.ConfigSource 文章。

app.config / web.config内容

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

externalfile.config内容:

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

是的,当然有可能!任何配置文件中的任何ConfigurationSection都可以是<!> quot; externalized <!> quot;通过configSource = <!>“; otherConfigFile.config <!>”;属性。

  

如果可以的话会更好   force要使用的Settings类   appSettings不是applicationSettings。

为了做到这一点,你需要远离使用漂亮的视觉<!>“设置<!>”; .NET中的类并直接使用ConfigurationManager。这样,您就可以将设置放入<!> lt; appSettings <!> gt;并使用ConfigurationManager.AppSettings [<!> quot; keyname <!> quot;]读取它们。

马克

如果是我的项目,我将摆脱applicationSettings并将所有内容移至appSettings部分。 applicationSettings的值是可以强类型化值并且可用于Intellisense。这些都不是特别有利于你的情况。当然,如果您仍在通过设计师创建设置,那么移动所有内容的重大打击是不值得的。

嗯......我知道这是可能的,因为我知道我们在以前的工作中这样做了。但我不记得究竟是怎么回事。我相信我们有一个父项目,我们用它来继承设置,并且有一个手动步骤,如果我们对子项目中的applicationSettings进行更改,我们需要手动将更改复制到父项目(但是然后他们被所有儿童项目继承。)

抱歉缺乏特异性;我不是那个实施解决方案的人,随着时间的推移它对我来说有点模糊。我确实记得我们能够做到这一点,我认为我的回忆对于我们如何做到这一点是准确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top