【问题标题】:How are the 2 config files related?2个配置文件有什么关系?
【发布时间】:2011-06-10 07:39:18
【问题描述】:

我在看别人的 C# 代码。项目中有一个app.config文件和一个xxx.config文件,AppSettings在这两个文件中。但我没有看到任何 ConfigureSource 或构建事件。那么代码如何使用 ConfigurationManager.AppSettings["key"] 来访问这两个文件中的设置呢?

谢谢。

更多线索:

我检查了 2 个配置文件的属性,发现它们的构建操作都是“嵌入式资源”

答案揭晓!

也许我缺少一些上下文,这是一个 Visual Studio 单元测试项目。 app.config 和 xxx.config 都是作为资源嵌入的,在测试初始化​​阶段,这些配置文件会从资源中提取出来写入到 vstesthost.exe.Config 中,供用户使用VSTestHost.exe

我只是不知道到底谁能发明这种非人类解决方案来处理配置。

【问题讨论】:

    标签: .net configuration


    【解决方案1】:

    ConfigurationManager.AppSettings["key"] 肯定会从一个文件中获取一个值(来自 app.config)。但是如果 app.config “重定向”到第二个文件,您可能有 2 个带有 appSettings 部分的文件:

    <appSettings file="settings.config" />
    

    第二个文件包含所有键。

    Here你可以阅读更多

    【讨论】:

    • 感谢您的回复。但奇怪的是,我在 app.config 中搜索了“file=”,但没有。会不会有其他的可能?另外,我在“app.config”中搜索了“xxx.config”文件名,也没有。谢谢。
    • 这里还有一些线索。有问题的项目似乎将 和 WCF 设置放在单独的配置文件中。
    • 我不知道您的项目为什么会生成 2 个单独的文件。这似乎不是默认行为。如果您能在了解解决方案的工作原理后在此处发布解决方案的简短说明,我们将不胜感激
    【解决方案2】:

    您可以像这样合并 appSettings:

    app.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings file="xxx.config">
        <add key="foo" value="bar"/>
      </appSettings>
    </configuration>
    

    xxx.config

    <?xml version="1.0" encoding="utf-8" ?>
    <appSettings>
      <add key="xxx" value="yyy"/>
    </appSettings>
    

    请注意,您必须将 xxx.config 的 Copy to Output Directory 属性设置为 Copy alwaysCopy if newer,因为 xxx.config 不会复制到默认输出目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2015-02-28
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多