C#app.config在多个项目之间共享

C#app.config在多个项目之间共享,c#,app-config,C#,App Config,我正在开发一个包含多个项目的解决方案 我遵循此处描述的方法(建议使用公共解决方案项的第一个响应): 结果是,对于每个项目,都会复制app.config文件并将其重命名为XXX.exe.config 但是,理想的输出是每个项目的配置文件名保持不变(例如App.config)。因为我想在部署时将所有可执行文件和DLL放在同一个文件夹中(一些可执行文件引用同一个DLL,所以将它们放在一起是有意义的) 非常感谢您的建议。您可以手动加载配置文件。请参阅此处的讨论:我建议您考虑使用TT模板。然后,简单的解决

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

我遵循此处描述的方法(建议使用公共解决方案项的第一个响应):

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

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


非常感谢您的建议。

您可以手动加载配置文件。请参阅此处的讨论:

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

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

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

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

每个App.Template.ttinclude实际上包含另一个主配置文件,该文件包含我们的常用设置,但随着我们在主配置文件中的switch语句中包含特定于环境的配置(以避免TT文件处理中的错误),该文件开始变得复杂

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

e、 g.MyApp.Exe.config包含:

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


为什么每个项目都需要相同配置文件的副本?为什么不将您的值读取到一个项目中,让该项目公开共享这些值,使其可供其他项目使用?@Bernard。在生产环境中,从配置文件驱动设置(并具有多个配置文件和共享的配置设置)这很有道理。我正在从事一个有30多个服务项目(Web和Win托管的WCF)的项目,公共设置的数量让我们抓狂(直到我们将它们全部更改为使用TT文件)。