【问题标题】:Moving a section of app.config to a separate file将 app.config 的一部分移动到单独的文件中
【发布时间】:2010-10-27 00:16:17
【问题描述】:

为了方便我的应用程序,我需要将 app.config 的“运行时”元素放在单独的文件中。

试过类似的东西

<runtime file="runtime.conf" />

还有

<runtime configFile="runtime.conf" />

在 runtime.conf 我有:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
            .......
    </assemblyBinding>
</runtime>

但它被忽略了......

有没有办法找出问题所在。

当然,当我将运行时部分直接复制到 app.config 中时,它可以工作。

我在某处发现使用 configFile="..." 包含的文件必须位于子目录中。试过了,还是不行……

似乎包括不适用于运行时部分。

【问题讨论】:

  • 一个缺点是 asp.net 运行时不会检测到外部文件(如 runtime.config)何时更改。更改 runtime.config 后是否无法获取值
  • 关于它的任何最终解决方案?

标签: .net configuration app-config


【解决方案1】:

您可以使用 linkedConfiguration 元素 https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/linkedconfiguration-element 从外部文件加载绑定重定向配置

<configuration>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <linkedConfiguration href="file://c:\Program Files\Contoso\sharedConfig.xml"/>
  </assemblyBinding>
</configuration>

【讨论】:

  • 无法使其与 wcf 应用程序一起使用。你在 sharedConfig.xml 中放了什么?你重复'assemblybinding'根吗?还是根是“运行时”部分?谢谢
  • 我没用过。此示例来自上述文档
【解决方案2】:

您不能使用 configSource 来外部化 配置。

是一种特殊情况,它不会读取 configSource 中指定的任何外部文件中的值。

指定“configSource”属性不会导致错误,根本不会读取源文件。

更多信息在这里:http://world.episerver.com/Blogs/Magnus-Rahl/Dates/2011/6/Todays-gotcha-configSource-on-the-runtime-section-element/

【讨论】:

  • 很遗憾,因为这正是一个包含大量样板“配置”的部分,可能在解决方案中的各个项目中重复... :-(
【解决方案3】:

您好,您的 runtime.conf 在应用程序的 bin 文件夹中

【讨论】:

  • 就是在app.config所在的目录下。
  • 但是 app.config 通常被复制到 bin 作为 .exe.config。你的 runtime.config 是否也在构建时复制到 bin 文件夹中?
  • 这应该被标记为正确答案。我遇到了完全相同的问题。我将“复制到输出目录”更改为“始终复制”,它起作用了。
【解决方案4】:

试试这个:

<runtime configSource="runtime.conf"/>

【讨论】:

  • 不幸的是同样的结果。我首先尝试使用 configSource,然后使用“文件”并将代码复制到我的答案中......但最初它应该是“configSource”,它简单地忽略了它该死的:D
  • 理论上可以指定正确的属性,但运行时是一种特殊情况,不会读取 configSource 值。从测试中学习。
猜你喜欢
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多