【问题标题】:C# app.config sharing between multiple projectsC# app.config 在多个项目之间共享
【发布时间】:2021-05-07 13:26:11
【问题描述】:

我正在开发一个包含多个项目的解决方案。

我按照这里描述的方法(建议使用通用解决方案的第一个响应):single app.config multi-project c#

结果是,对于每个项目,app.config 文件都被复制并重命名为 XXX.exe.config。

但是,理想的输出是每个项目的配置文件名保持不变(例如 App.config)。因为我想在部署时将所有可执行文件和 DLL 放在同一个文件夹中(一些可执行文件引用同一个 DLL,因此将它们放在一起很有意义)。

欢迎提出任何建议。

【问题讨论】:

  • 为什么每个项目都需要一份相同的配置文件?为什么不将您的价值观读入一个项目,并让该项目公开分享这些价值观,让其他项目也可以使用它们?
  • @Bernard。在生产环境中,从配置文件驱动设置(以及拥有多个配置文件和共享配置设置)非常有意义。我正在处理一个包含 30 多个服务项目(Web 和 Win 托管的 WCF)的项目,常见设置的数量让我们发疯(直到我们将它们全部更改为使用 TT 文件)。

标签: c# app-config


【解决方案1】:

您可以手动加载配置文件。请参阅此处的讨论:Using ConfigurationManager to load config from an arbitrary location

【讨论】:

    【解决方案2】:

    我建议您考虑使用 TT 模板。那么简单的解决方案是拥有一个包含通用 ttinclude 文件的 App.tt 文件。这将根据您可能希望在 app.config 中设置的其他设置生成具有相同(或不同)内容的 App.config 文件。

    例如,我们有一个如下所示的 App.Config:

    <# EnvironmentName = "local"; #>
    <#@ include file="App.Template.ttinclude" #>
    

    App.Template.ttinclude 包含我们想要输出的所有内容(以及一些根据环境值更改的设置,因为我们支持 8 种安装环境。

    每个 App.Template.ttinclude 实际上都包含另一个包含我们常用设置的主配置文件,但是当我们在主配置文件中包含特定于环境的配置时,这开始变得复杂,在一个 switch 语句中(以解决一个错误在 TT 文件处理中)。

    我们有一个特定于应用程序的 DLL 配置,它只包含我们的其他配置之一:

    例如MyApp.Exe.config 包含:

    <#@ include file="App.tt" #>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-15
      • 2011-02-09
      • 1970-01-01
      • 2018-03-18
      • 2012-07-22
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多